org.springframework.jdbc.core.metadata

## Interface CallMetaDataProvider

- All Known Implementing Classes:
    Db2CallMetaDataProvider, DerbyCallMetaDataProvider, GenericCallMetaDataProvider, HanaCallMetaDataProvider, OracleCallMetaDataProvider, PostgresCallMetaDataProvider, SqlServerCallMetaDataProvider, SybaseCallMetaDataProvider

      public interface CallMetaDataProvider

  Interface specifying the API to be implemented by a class providing call meta-data.

  This is intended for internal use by Spring's `SimpleJdbcCall`.

  Since:
    2.5
  Author:
    Thomas Risberg

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `byPassReturnParameter(String parameterName)` Should we bypass the return parameter with the specified name?
    `String` | `catalogNameToUse(String catalogName)` Provide any modification of the catalog name passed in to match the meta-data currently used.
    `SqlParameter` | `createDefaultInOutParameter(String parameterName, CallParameterMetaData meta)` Create a default in/out parameter based on the provided meta-data.
    `SqlParameter` | `createDefaultInParameter(String parameterName, CallParameterMetaData meta)` Create a default in parameter based on the provided meta-data.
    `SqlParameter` | `createDefaultOutParameter(String parameterName, CallParameterMetaData meta)` Create a default out parameter based on the provided meta-data.
    `List<CallParameterMetaData>` | `getCallParameterMetaData()` Get the call parameter meta-data that is currently used.
    `int` | `getRefCursorSqlType()` Get the `Types` type for columns that return ResultSets as ref cursors if this feature is supported.
    `String` | `getUserName()` Get the name of the current user.
    `void` | `initializeWithMetaData(DatabaseMetaData databaseMetaData)` Initialize using the provided DatabaseMetData.
    `void` | `initializeWithProcedureColumnMetaData(DatabaseMetaData databaseMetaData, String catalogName, String schemaName, String procedureName)` Initialize the database specific management of procedure column meta-data.
    `boolean` | `isProcedureColumnMetaDataUsed()` Are we using the meta-data for the procedure columns?
    `boolean` | `isRefCursorSupported()` Does this database support returning ResultSets as ref cursors to be retrieved with `CallableStatement.getObject(int)` for the specified column?
    `boolean` | `isReturnResultSetSupported()` Does this database support returning ResultSets that should be retrieved with the JDBC call: `Statement.getResultSet()`?
    `boolean` | `isSupportsCatalogsInProcedureCalls()` Does the database support the use of catalog name in procedure calls?
    `boolean` | `isSupportsSchemasInProcedureCalls()` Does the database support the use of schema name in procedure calls?
    `String` | `metaDataCatalogNameToUse(String catalogName)` Provide any modification of the catalog name passed in to match the meta-data currently used.
    `String` | `metaDataSchemaNameToUse(String schemaName)` Provide any modification of the schema name passed in to match the meta-data currently used.
    `String` | `parameterNameToUse(String parameterName)` Provide any modification of the column name passed in to match the meta-data currently used.
    `String` | `procedureNameToUse(String procedureName)` Provide any modification of the procedure name passed in to match the meta-data currently used.
    `String` | `schemaNameToUse(String schemaName)` Provide any modification of the schema name passed in to match the meta-data currently used.

- - ### Method Detail

    - #### initializeWithMetaData

          void initializeWithMetaData(DatabaseMetaData databaseMetaData)
                               throws SQLException

      Initialize using the provided DatabaseMetData.
      Parameters:
        `databaseMetaData` - used to retrieve database specific information
      Throws:
        `SQLException` - in case of initialization failure

    - #### initializeWithProcedureColumnMetaData

          void initializeWithProcedureColumnMetaData(DatabaseMetaData databaseMetaData,
                                                     @Nullable
                                                     String catalogName,
                                                     @Nullable
                                                     String schemaName,
                                                     @Nullable
                                                     String procedureName)
                                              throws SQLException

      Initialize the database specific management of procedure column meta-data.

      This is only called for databases that are supported. This initialization can be turned off by specifying that column meta-data should not be used.

      Parameters:
        `databaseMetaData` - used to retrieve database specific information
        `catalogName` - name of catalog to use (or `null` if none)
        `schemaName` - name of schema name to use (or `null` if none)
        `procedureName` - name of the stored procedure
      Throws:
        `SQLException` - in case of initialization failure
      See Also:
        `SimpleJdbcCall.withoutProcedureColumnMetaDataAccess()`

    - #### getCallParameterMetaData

          List<CallParameterMetaData> getCallParameterMetaData()

      Get the call parameter meta-data that is currently used.
      Returns:
        a List of `CallParameterMetaData`

    - #### procedureNameToUse

          @Nullable
          String procedureNameToUse(@Nullable
                                              String procedureName)

      Provide any modification of the procedure name passed in to match the meta-data currently used.

      This could include altering the case.

    - #### catalogNameToUse

          @Nullable
          String catalogNameToUse(@Nullable
                                            String catalogName)

      Provide any modification of the catalog name passed in to match the meta-data currently used.

      This could include altering the case.

    - #### schemaNameToUse

          @Nullable
          String schemaNameToUse(@Nullable
                                           String schemaName)

      Provide any modification of the schema name passed in to match the meta-data currently used.

      This could include altering the case.

    - #### metaDataCatalogNameToUse

          @Nullable
          String metaDataCatalogNameToUse(@Nullable
                                                    String catalogName)

      Provide any modification of the catalog name passed in to match the meta-data currently used.

      The returned value will be used for meta-data lookups. This could include altering the case used or providing a base catalog if none is provided.

    - #### metaDataSchemaNameToUse

          @Nullable
          String metaDataSchemaNameToUse(@Nullable
                                                   String schemaName)

      Provide any modification of the schema name passed in to match the meta-data currently used.

      The returned value will be used for meta-data lookups. This could include altering the case used or providing a base schema if none is provided.

    - #### parameterNameToUse

          @Nullable
          String parameterNameToUse(@Nullable
                                              String parameterName)

      Provide any modification of the column name passed in to match the meta-data currently used.

      This could include altering the case.

      Parameters:
        `parameterName` - name of the parameter of column

    - #### createDefaultOutParameter

          SqlParameter createDefaultOutParameter(String parameterName,
                                                 CallParameterMetaData meta)

      Create a default out parameter based on the provided meta-data.

      This is used when no explicit parameter declaration has been made.

      Parameters:
        `parameterName` - the name of the parameter
        `meta` - meta-data used for this call
      Returns:
        the configured SqlOutParameter

    - #### createDefaultInOutParameter

          SqlParameter createDefaultInOutParameter(String parameterName,
                                                   CallParameterMetaData meta)

      Create a default in/out parameter based on the provided meta-data.

      This is used when no explicit parameter declaration has been made.

      Parameters:
        `parameterName` - the name of the parameter
        `meta` - meta-data used for this call
      Returns:
        the configured SqlInOutParameter

    - #### createDefaultInParameter

          SqlParameter createDefaultInParameter(String parameterName,
                                                CallParameterMetaData meta)

      Create a default in parameter based on the provided meta-data.

      This is used when no explicit parameter declaration has been made.

      Parameters:
        `parameterName` - the name of the parameter
        `meta` - meta-data used for this call
      Returns:
        the configured SqlParameter

    - #### getUserName

          @Nullable
          String getUserName()

      Get the name of the current user. Useful for meta-data lookups etc.
      Returns:
        current user name from database connection

    - #### isReturnResultSetSupported

          boolean isReturnResultSetSupported()

      Does this database support returning ResultSets that should be retrieved with the JDBC call: `Statement.getResultSet()`?

    - #### isRefCursorSupported

          boolean isRefCursorSupported()

      Does this database support returning ResultSets as ref cursors to be retrieved with `CallableStatement.getObject(int)` for the specified column?

    - #### getRefCursorSqlType

          int getRefCursorSqlType()

      Get the `Types` type for columns that return ResultSets as ref cursors if this feature is supported.

    - #### isProcedureColumnMetaDataUsed

          boolean isProcedureColumnMetaDataUsed()

      Are we using the meta-data for the procedure columns?

    - #### byPassReturnParameter

          boolean byPassReturnParameter(String parameterName)

      Should we bypass the return parameter with the specified name?

      This allows the database specific implementation to skip the processing for specific results returned by the database call.

    - #### isSupportsCatalogsInProcedureCalls

          boolean isSupportsCatalogsInProcedureCalls()

      Does the database support the use of catalog name in procedure calls?

    - #### isSupportsSchemasInProcedureCalls

          boolean isSupportsSchemasInProcedureCalls()

      Does the database support the use of schema name in procedure calls?