Drivers can allocate driver-specific values for the following:
SQL Data Type Indicators These are used in ParameterType in SQLBindParameter and in DataType in SQLGetTypeInfo and returned by SQLColAttribute, SQLColumns, SQLDescribeCol, SQLGetTypeInfo, SQLDescribeParam, SQLProcedureColumns, and SQLSpecialColumns.
Descriptor Fields These are used in FieldIdentifier in SQLColAttribute, SQLGetDescField, and SQLSetDescField.
Diagnostic Fields These are used in DiagIdentifier in SQLGetDiagField and SQLGetDiagRec.
Information Types These are used in InfoType in SQLGetInfo.
Connection and Statement Attributes These are used in Attribute in SQLGetConnectAttr, SQLGetStmtAttr, SQLSetConnectAttr, and SQLSetStmtAttr.
For each of these items, there are two sets of values: values reserved for use by ODBC, and values reserved for use by drivers. Before implementing driver-specific values, a driver writer must request a value for each driver-specific type, field, or attribute from Open Group. For new driver development, use the range described in the table below. The ODBC 3.8 Driver Manager will not generate an error if an unknown value is used that is not in the range described below. However, later versions of the Driver Manager might generate an error if unknown values are received that are not in the range.
When any of these values is passed to an ODBC function, the driver must check whether the value is valid. Drivers return SQLSTATE HYC00 (Optional feature not implemented) for driver-specific values that apply to other drivers.
Starting with ODBC 3.8, driver writers can allocate driver-specific attributes within a reserved range.
The ODBC 3.8 Driver Manager neither validates nor enforces these ranges for backward compatibility. A future version of the Driver Manager might enforce them, however.
|Attribute type||ODBC data type||Driver-specific range base||Driver-specific range limit||ODBC constant for driver-specific value range base|
|SQL data type indicators||SQLSMALLINT||0x4000||0x7FFF||SQL_DRIVER_SQL_TYPE_BASE|
Driver-specific data types, descriptor fields, diagnostic fields, information types, statement attributes, and connection attributes must be described in the driver documentation. When any of these values is passed to an ODBC function, the driver must check whether the value is valid. Drivers return SQLSTATE HYC00 (Optional feature not implemented) for driver-specific values that apply to other drivers.
The base values are defined to facilitate driver development. For example, driver specific diagnostic attributes can be defined in the following format:
SQL_DRIVER_DIAGNOSTIC_BASE+0, SQL_DRIVER_DIAGNOSTIC_BASE +1