特定于驱动程序的数据类型、描述符类型、信息类型、诊断类型和属性

驱动程序可以为以下内容分配特定于驱动程序的值:

  • SQL 数据类型指示器它们用于 SQLBindParameter 中的 ParameterType 以及 SQLGetTypeInfo 中的 DataType,并由 SQLColAttributeSQLColumnsSQLDescribeColSQLGetTypeInfoSQLDescribeParamSQLProcedureColumnsSQLSpecialColumns 返回。

  • 描述符字段它们用于 SQLColAttributeSQLGetDescFieldSQLSetDescField 中的 FieldIdentifier

  • 诊断字段它们用于 SQLGetDiagFieldSQLGetDiagRec 中的 DiagIdentifier

  • 信息类型它们用于 SQLGetInfo 中的 InfoType

  • 连接和语句属性这些属性用于 SQLGetConnectAttrSQLGetStmtAttrSQLSetConnectAttrSQLSetStmtAttr 中的 Attribute

对于每个项目,都有两组值:保留供 ODBC 使用的值,以及保留供驱动程序使用的值。 在执行特定于驱动程序的值之前,驱动程序编写器必须从 Open Group 请求每个特定于驱动程序的类型、字段或属性的值。 对于新驱动程序开发,请使用下表中所述的范围。 如果使用的未知值不在下述范围内,ODBC 3.8 驱动程序管理器将不会生成错误。 但是,如果接收到不在范围内的未知值,则更高版本的驱动程序管理器可能会生成错误。

将这些值中的任何一个值传递给 ODBC 函数时,驱动程序必须检查该值是否有效。 驱动程序返回特定于驱动程序的值(适用于其他驱动程序)的 SQLSTATE HYC00(可选功能未执行)。

从 ODBC 3.8 开始,驱动程序编写器便可在保留范围内分配特定于驱动程序的属性。

注意

ODBC 3.8 驱动程序管理器既不验证也不强制实施这些范围以实现后向兼容性。 但是,驱动程序管理器的未来版本可能会强制执行这些范围。

属性类型 ODBC 数据类型 特定于驱动程序的范围基准 特定于驱动程序的范围限制 特定于驱动程序的值范围基准的 ODBC 常量
SQL 数据类型指示器 SQLSMALLINT 0x4000 0x7FFF SQL_DRIVER_SQL_TYPE_BASE
描述符字段 SQLSMALLINT 0x4000 0x7FFF SQL_DRIVER_DESCRIPTOR_BASE
诊断字段 SQLSMALLINT 0x4000 0x7FFF SQL_DRIVER_DIAGNOSTIC_BASE
信息类型 SQLUSMALLINT 0x4000 0x7FFF SQL_DRIVER_INFO_TYPE_BASE
连接属性 SQLINTEGER 0x00004000 0x00007FFF SQL_DRIVER_CONNECT_ATTR_BASE
语句属性 SQLINTEGER 0x00004000 0x00007FFF SQL_DRIVER_STATEMENT_ATTR_BASE

注意

驱动程序文档中必须描述特定于驱动程序的数据类型、描述符字段、诊断字段、信息类型、语句属性和连接属性。 将这些值中的任何一个值传递给 ODBC 函数时,驱动程序必须检查该值是否有效。 驱动程序返回特定于驱动程序的值(适用于其他驱动程序)的 SQLSTATE HYC00(可选功能未执行)。

定义基准值以促进驱动程序开发。 例如,可以通过采用以下格式来定义特定于驱动程序的诊断属性:

SQL_DRIVER_DIAGNOSTIC_BASE+0, SQL_DRIVER_DIAGNOSTIC_BASE +1