## org.springframework.jdbc.core.metadata
Interface CallMetaDataProvider

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

    public interface CallMetaDataProvider

Interface specifying the API to be implemented by a class providing call metadata. This is intended for internal use by Spring's `SimpleJdbcTemplate`.

Since:
  2.5
Author:
  Thomas Risberg

Method Summary
`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 inout 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 metadata 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,
                                               String catalogName,
                                               String schemaName,
                                               String procedureName)
                                               throws SQLException

  Initialize the database specific management of procedure column meta data. This is only called for databases that are supported. This initalization 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
    `schemaName` - name of schema name to use or null
    `procedureName` - name of the stored procedure
  Throws:
    `SQLException` - in case of initialization failure
  See Also:
    `SimpleJdbcCall.withoutProcedureColumnMetaDataAccess()`

### procedureNameToUse

    String procedureNameToUse(String procedureName)

  Provide any modification of the procedure name passed in to match the meta data currently used. This could include alterig the case.

### catalogNameToUse

    String catalogNameToUse(String catalogName)

  Provide any modification of the catalog name passed in to match the meta data currently used. This could include alterig the case.

### schemaNameToUse

    String schemaNameToUse(String schemaName)

  Provide any modification of the schema name passed in to match the meta data currently used. This could include alterig the case.

### metaDataCatalogNameToUse

    String metaDataCatalogNameToUse(String catalogName)

  Provide any modification of the catalog name passed in to match the meta data currently used. The reyurned value will be used for meta data lookups. This could include alterig the case used or providing a base catalog if mone provided.

### metaDataSchemaNameToUse

    String metaDataSchemaNameToUse(String schemaName)

  Provide any modification of the schema name passed in to match the meta data currently used. The reyurned value will be used for meta data lookups. This could include alterig the case used or providing a base schema if mone provided.

### parameterNameToUse

    String parameterNameToUse(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 inout 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

    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.

### getCallParameterMetaData

    List<CallParameterMetaData> getCallParameterMetaData()

  Get the call parameter metadata that is currently used.

  Returns:
    List of `CallParameterMetaData`

### 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