SQLGetInfo 函数

一致性
引入的版本:ODBC 1.0 标准符合性:ISO 92

总结
SQLGetInfo 返回与连接关联的驱动程序和数据源的常规信息。

语法

  
SQLRETURN SQLGetInfo(  
     SQLHDBC         ConnectionHandle,  
     SQLUSMALLINT    InfoType,  
     SQLPOINTER      InfoValuePtr,  
     SQLSMALLINT     BufferLength,  
     SQLSMALLINT *   StringLengthPtr);  

参数

ConnectionHandle
[输入] 连接句柄。

InfoType
[输入]信息类型。

InfoValuePtr
[输出]指向要在其中返回信息的缓冲区的指针。 根据所请求的 InfoType,返回的信息将是以下值之一:以 null 结尾的字符串、SQLUSMALLINT 值、SQLUINTEGER 位掩码、SQLUINTEGER 标志、SQLUINTEGER 二进制值或 SQLULEN 值。

如果 InfoType 参数SQL_DRIVER_HDESC或SQL_DRIVER_HSTMT,则 InfoValuePtr 参数既是输入和输出。 (有关详细信息,请参阅此函数说明后面的SQL_DRIVER_HDESC或SQL_DRIVER_HSTMT描述符。

如果 InfoValuePtr 为 NULL,StringLengthPtr 仍将返回可用于在 InfoValuePtr 指向的缓冲区中返回的字节总数(不包括字符数据的 null 终止字符)。

BufferLength
[输入]*InfoValuePtr 缓冲区的长度。 如果 *InfoValuePtr 中的值不是字符串,或者 InfoValuePtr 是空指针,则忽略 BufferLength 参数。 驱动程序假定 *InfoValuePtr 的大小是基于 InfoTypeSQLUSMALLINT 或 SQLUINTEGER。 如果 *InfoValuePtr 是 Unicode 字符串(调用 SQLGetInfoW 时), BufferLength 参数必须是偶数;否则,将返回 SQLSTATE HY090(字符串或缓冲区长度无效)。

StringLengthPtr
[输出]指向可在 *InfoValuePtr 中返回的可用字节总数(不包括字符数据的 null 终止字符)的缓冲区的指针。

对于字符数据,如果可返回的字节数大于或等于 BufferLength,则 *InfoValuePtr 中的信息将被截断为 BufferLength 字节减去 null 终止字符的长度,并且由驱动程序以 null 结尾。

对于所有其他类型的数据,将忽略 BufferLength 的值,驱动程序假定 *InfoValuePtr 的大小是 SQLUSMALLINT 或 SQLUINTEGER,具体取决于 InfoType

返回

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR 或SQL_INVALID_HANDLE。

诊断

当 SQLGetInfo 返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,可以通过使用 handleType of SQL_HANDLE_DBC 和 ConnectionHandle 句柄调用 SQLGetDiagRec 来获取关联的 SQLSTATE 值。 下表列出了 SQLGetInfo 通常返回的 SQLSTATE 值,并解释此函数上下文中的每个值;表示法“(DM)”位于驱动程序管理器返回的 SQLSTATE 的说明之前。 除非另有说明,否则与每个 SQLSTATE 值关联的返回代码SQL_ERROR。

SQLSTATE 错误 说明
01000 常规警告 特定于驱动程序的信息性消息。 (函数返回SQL_SUCCESS_WITH_INFO。)
01004 字符串数据,右截断 缓冲区 *InfoValuePtr 不够大,无法返回所有请求的信息。 因此,信息被截断。 请求的信息长度在其未构造的表单中返回在 *StringLengthPtr 中。 (函数返回SQL_SUCCESS_WITH_INFO。)
08003 连接未打开 (DM) InfoType请求的信息类型需要打开连接。 在 ODBC 保留的信息类型中,只有SQL_ODBC_VER可以返回且没有打开的连接。
08S01 通信链接失败 驱动程序与驱动程序连接到的数据源之间的通信链接在函数完成处理之前失败。
HY000 常规错误 发生错误:没有特定的 SQLSTATE,也没有定义特定于实现的 SQLSTATE。 *MessageText 缓冲区中 SQLGetDiagRec 返回的错误消息描述错误及其原因。
HY001 内存分配错误 驱动程序无法分配支持执行或完成函数所需的内存。
HY010 函数序列错误 (DM) 为 StatementHandle 调用了 SQLExecuteSQLExecDirectSQLMoreResults,并返回了SQL_PARAM_DATA_AVAILABLE。 在检索所有流式处理参数的数据之前调用此函数。
HY013 内存管理错误 无法处理函数调用,因为基础内存对象无法访问,可能是因为内存条件低。
HY024 属性值无效 (DM) InfoType 参数SQL_DRIVER_HSTMT,InfoValuePtr 指向的值不是有效的语句句柄。

(DM) InfoType 参数SQL_DRIVER_HDESC,InfoValuePtr 指向的值不是有效的描述符句柄。
HY090 字符串或缓冲区长度无效 (DM) 为参数 BufferLength 指定的值小于 0。

(DM) BufferLength 指定的值为奇数,*InfoValuePtr 为 Unicode 数据类型。
HY096 信息类型范围不足 为参数 InfoType 指定的值对驱动程序支持的 ODBC 版本无效。
HY117 连接因未知事务状态而挂起。 仅允许断开连接和只读函数。 (DM) 有关挂起状态的详细信息,请参阅 SQLEndTran 函数
HYC00 未实现的可选字段 为参数 InfoType 指定的值是驱动程序不支持的特定于驱动程序的值。
HYT01 超过连接超时时间 在数据源响应请求之前,连接超时期限已过期。 连接超时期限通过 SQLSetConnectAttr 设置,SQL_ATTR_CONNECTION_TIMEOUT。
IM001 驱动程序不支持此函数 (DM) 与 ConnectionHandle 对应的驱动程序不支持该函数。

注释

当前定义的信息类型显示在“信息类型”中,在本部分的后面部分:预计将定义更多资源来利用不同的数据源。 ODBC 保留一系列信息类型;驱动程序开发人员必须保留自己的开放组中特定于驱动程序的值。 对于驱动程序定义的 InfoTypes,SQLGetInfo 不执行 Unicode 转换或指纹转换(请参阅附录 A:ODBC 程序员参考的 ODBC 错误代码)。 有关详细信息,请参阅《特定于驱动程序的数据类型、描述符类型、信息类型、诊断类型和属性》。 在 *InfoValuePtr 中返回的信息的格式取决于 所请求的 InfoTypeSQLGetInfo 将以五种不同的格式之一返回信息:

  • 以 null 结尾的字符串

  • SQLUSMALLINT 值

  • SQLUINTEGER 位掩码

  • SQLUINTEGER 值

  • SQLUINTEGER 二进制值

类型说明中记录了每种信息类型的格式。 应用程序必须相应地转换 *InfoValuePtr 中返回的值。 有关应用程序如何从 SQLUINTEGER 位掩码检索数据的示例,请参阅“代码示例”。

驱动程序必须返回下表中定义的每种信息类型的值。 如果信息类型不适用于驱动程序或数据源,驱动程序将返回下表中列出的值之一。

信息类型
字符串(“Y”或“N”) "N"
字符串(不是“Y”或“N”) 空字符串
SQLUSMALLINT 0
SQLUINTEGER 位掩码或 SQLUINTEGER 二进制值 0L

例如,如果数据源不支持过程,SQLGetInfo 将返回下表中列出的与过程相关的 InfoType 值的值

InfoType
SQL_PROCEDURES "N"
SQL_ACCESSIBLE_PROCEDURES "N"
SQL_MAX_PROCEDURE_NAME_LEN 0
SQL_PROCEDURE_TERM 空字符串

SQLGetInfo 为 InfoType 的值返回 SQLSTATE HY096 (参数值无效),这些值属于保留供 ODBC 使用的信息类型范围,但不由驱动程序支持的 ODBC 版本定义。 若要确定驱动程序符合的 ODBC 版本,应用程序使用SQL_DRIVER_ODBC_VER信息类型调用 SQLGetInfoSQLGetInfo 为 InfoType 的值返回 SQLSTATE HYC00(可选功能未实现),这些值属于为特定于驱动程序使用保留的信息类型范围,但驱动程序不支持这些值。

对 SQLGetInfo 的所有调用都需要打开连接,除非 InfoType SQL_ODBC_VER,这将返回驱动程序管理器的版本。

信息类型

本部分列出了 SQLGetInfo 支持的信息类型。 信息类型按类别分组,按字母顺序列出。 还会列出为 ODBC 3*.x* 添加或重命名的信息类型。

驱动程序信息

InfoType 参数的以下值返回有关 ODBC 驱动程序的信息,例如活动语句数、数据源名称和接口标准符合性级别:

SQL_ACTIVE_ENVIRONMENTS
SQL_ASYNC_DBC_FUNCTIONS
SQL_ASYNC_MODE
SQL_ASYNC_NOTIFICATION
SQL_BATCH_ROW_COUNT
SQL_BATCH_SUPPORT
SQL_DATA_SOURCE_NAME
SQL_DRIVER_AWARE_POOLING_SUPPORTED
SQL_DRIVER_HDBC
SQL_DRIVER_HDESC
SQL_DRIVER_HENV
SQL_DRIVER_HLIB
SQL_DRIVER_HSTMT
SQL_DRIVER_NAME
SQL_DRIVER_ODBC_VER
SQL_DRIVER_VER
SQL_DYNAMIC_CURSOR_ATTRIBUTES1
SQL_DYNAMIC_CURSOR_ATTRIBUTES2
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1

SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2
SQL_FILE_USAGE
SQL_GETDATA_EXTENSIONS
SQL_INFO_SCHEMA_VIEWS
SQL_KEYSET_CURSOR_ATTRIBUTES1
SQL_KEYSET_CURSOR_ATTRIBUTES2
SQL_MAX_ASYNC_CONCURRENT_STATEMENTS
SQL_MAX_CONCURRENT_ACTIVITIES
SQL_MAX_DRIVER_CONNECTIONS
SQL_ODBC_INTERFACE_CONFORMANCE
SQL_ODBC_STANDARD_CLI_CONFORMANCE
SQL_ODBC_VER
SQL_PARAM_ARRAY_ROW_COUNTS
SQL_PARAM_ARRAY_SELECTS
SQL_ROW_UPDATES
SQL_SEARCH_PATTERN_ESCAPE
SQL_SERVER_NAME
SQL_STATIC_CURSOR_ATTRIBUTES1
SQL_STATIC_CURSOR_ATTRIBUTES2

注意

实现 SQLGetInfo 时,驱动程序可以通过最大程度地减少从服务器发送或请求信息次数来提高性能。

DBMS 产品信息

InfoType 参数的以下值返回有关 DBMS 产品的信息,例如 DBMS 名称和版本:

SQL_DATABASE_NAME
SQL_DBMS_NAME

SQL_DBMS_VER

数据源信息

InfoType 参数的以下值返回有关数据源的信息,例如游标特征和事务功能:

SQL_ACCESSIBLE_PROCEDURES
SQL_ACCESSIBLE_TABLES
SQL_BOOKMARK_PERSISTENCE
SQL_CATALOG_TERM
SQL_COLLATION_SEQ
SQL_CONCAT_NULL_BEHAVIOR
SQL_CURSOR_COMMIT_BEHAVIOR
SQL_CURSOR_ROLLBACK_BEHAVIOR
SQL_CURSOR_SENSITIVITY
SQL_DATA_SOURCE_READ_ONLY
SQL_DEFAULT_TXN_ISOLATION
SQL_DESCRIBE_PARAMETER

SQL_MULT_RESULT_SETS
SQL_MULTIPLE_ACTIVE_TXN
SQL_NEED_LONG_DATA_LEN
SQL_NULL_COLLATION
SQL_PROCEDURE_TERM
SQL_SCHEMA_TERM
SQL_SCROLL_OPTIONS
SQL_TABLE_TERM
SQL_TXN_CAPABLE
SQL_TXN_ISOLATION_OPTION
SQL_USER_NAME

支持的 SQL

InfoType 参数的以下值返回有关数据源支持的 SQL 语句的信息。 这些信息类型描述的每个功能的 SQL 语法是 SQL-92 语法。 这些信息类型并不详尽地描述整个 SQL-92 语法。 相反,它们描述了数据源通常提供不同级别的支持的语法部分。 具体而言,涵盖 SQL-92 中的大多数 DDL 语句。

应用程序应从SQL_SQL_CONFORMANCE信息类型中确定受支持的语法的一般级别,并使用其他信息类型来确定所说明标准符合性级别的变体。

SQL_AGGREGATE_FUNCTIONS
SQL_ALTER_DOMAIN
SQL_ALTER_SCHEMA
SQL_ALTER_TABLE
SQL_ANSI_SQL_DATETIME_LITERALS
SQL_CATALOG_LOCATION
SQL_CATALOG_NAME
SQL_CATALOG_NAME_SEPARATOR
SQL_CATALOG_USAGE
SQL_COLUMN_ALIAS
SQL_CORRELATION_NAME
SQL_CREATE_ASSERTION
SQL_CREATE_CHARACTER_SET
SQL_CREATE_COLLATION
SQL_CREATE_DOMAIN
SQL_CREATE_SCHEMA
SQL_CREATE_TABLE
SQL_CREATE_TRANSLATION
SQL_DDL_INDEX
SQL_DROP_ASSERTION
SQL_DROP_CHARACTER_SET
SQL_DROP_COLLATION
SQL_DROP_DOMAIN
SQL_DROP_SCHEMA

SQL_DROP_TABLE
SQL_DROP_TRANSLATION
SQL_DROP_VIEW
SQL_EXPRESSIONS_IN_ORDERBY
SQL_GROUP_BY
SQL_IDENTIFIER_CASE
SQL_IDENTIFIER_QUOTE_CHAR
SQL_INDEX_KEYWORDS
SQL_INSERT_STATEMENT
SQL_INTEGRITY
SQL_KEYWORDS
SQL_LIKE_ESCAPE_CLAUSE
SQL_NON_NULLABLE_COLUMNS
SQL_OJ_CAPABILITIES
SQL_ORDER_BY_COLUMNS_IN_SELECT
SQL_OUTER_JOINS
SQL_PROCEDURES
SQL_QUOTED_IDENTIFIER_CASE
SQL_SCHEMA_USAGE
SQL_SPECIAL_CHARACTERS
SQL_SQL_CONFORMANCE
SQL_SUBQUERIES
SQL_UNION

SQL 限制

InfoType 参数的以下值返回有关应用于 SQL 语句中的标识符和子句的限制的信息,例如标识符的最大长度和选择列表中的最大列数。 驱动程序或数据源可能会施加限制。

SQL_MAX_BINARY_LITERAL_LEN
SQL_MAX_CATALOG_NAME_LEN
SQL_MAX_CHAR_LITERAL_LEN
SQL_MAX_COLUMN_NAME_LEN
SQL_MAX_COLUMNS_IN_GROUP_BY
SQL_MAX_COLUMNS_IN_INDEX
SQL_MAX_COLUMNS_IN_ORDER_BY
SQL_MAX_COLUMNS_IN_SELECT
SQL_MAX_COLUMNS_IN_TABLE
SQL_MAX_CURSOR_NAME_LEN

SQL_MAX_IDENTIFIER_LEN
SQL_MAX_INDEX_SIZE
SQL_MAX_PROCEDURE_NAME_LEN
SQL_MAX_ROW_SIZE
SQL_MAX_ROW_SIZE_INCLUDES_LONG
SQL_MAX_SCHEMA_NAME_LEN
SQL_MAX_STATEMENT_LEN
SQL_MAX_TABLE_NAME_LEN
SQL_MAX_TABLES_IN_SELECT
SQL_MAX_USER_NAME_LEN

标量函数信息

InfoType 参数的以下值返回有关数据源和驱动程序支持的标量函数的信息。 有关标量函数的详细信息,请参阅 附录 E:标量函数

SQL_CONVERT_FUNCTIONS
SQL_NUMERIC_FUNCTIONS
SQL_STRING_FUNCTIONS
SQL_SYSTEM_FUNCTIONS

SQL_TIMEDATE_ADD_INTERVALS
SQL_TIMEDATE_DIFF_INTERVALS
SQL_TIMEDATE_FUNCTIONS

转换信息

InfoType 参数的以下值返回一个 SQL 数据类型列表,数据源可以使用 CONVERT 标量函数转换指定的 SQL 数据类型

SQL_CONVERT_BIGINT
SQL_CONVERT_BINARY
SQL_CONVERT_BIT
SQL_CONVERT_CHAR
SQL_CONVERT_DATE
SQL_CONVERT_DECIMAL
SQL_CONVERT_DOUBLE
SQL_CONVERT_FLOAT
SQL_CONVERT_INTEGER
SQL_CONVERT_INTERVAL_DAY_TIME
SQL_CONVERT_INTERVAL_YEAR_MONTH

SQL_CONVERT_LONGVARBINARY
SQL_CONVERT_LONGVARCHAR
SQL_CONVERT_NUMERIC
SQL_CONVERT_REAL
SQL_CONVERT_SMALLINT
SQL_CONVERT_TIME
SQL_CONVERT_TIMESTAMP
SQL_CONVERT_TINYINT
SQL_CONVERT_VARBINARY
SQL_CONVERT_VARCHAR

为 ODBC 3.x 添加的信息类型

为 ODBC 3.x 添加了 InfoType 参数的以下值:

SQL_ACTIVE_ENVIRONMENTS
SQL_AGGREGATE_FUNCTIONS
SQL_ALTER_DOMAIN
SQL_ALTER_SCHEMA
SQL_ANSI_SQL_DATETIME_LITERALS
SQL_ASYNC_DBC_FUNCTIONS
SQL_ASYNC_MODE
SQL_ASYNC_NOTIFICATION
SQL_BATCH_ROW_COUNT
SQL_BATCH_SUPPORT
SQL_CATALOG_NAME
SQL_COLLATION_SEQ
SQL_CONVERT_INTERVAL_DAY_TIME
SQL_CONVERT_INTERVAL_YEAR_MONTH
SQL_CREATE_ASSERTION
SQL_CREATE_CHARACTER_SET
SQL_CREATE_COLLATION
SQL_CREATE_DOMAIN
SQL_CREATE_SCHEMA
SQL_CREATE_TABLE
SQL_CREATE_TRANSLATION
SQL_CURSOR_SENSITIVITY
SQL_DDL_INDEX
SQL_DESCRIBE_PARAMETER
SQL_DM_VER

SQL_DRIVER_AWARE_POOLING_SUPPORTED
SQL_DRIVER_HDESC
SQL_DROP_ASSERTION
SQL_DROP_CHARACTER_SET
SQL_DROP_COLLATION
SQL_DROP_DOMAIN
SQL_DROP_SCHEMA
SQL_DROP_TABLE
SQL_DROP_TRANSLATION
SQL_DROP_VIEW
SQL_DYNAMIC_CURSOR_ATTRIBUTES1
SQL_DYNAMIC_CURSOR_ATTRIBUTES2
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2
SQL_INFO_SCHEMA_VIEWS
SQL_INSERT_STATEMENT
SQL_KEYSET_CURSOR_ATTRIBUTES1
SQL_KEYSET_CURSOR_ATTRIBUTES2
SQL_MAX_ASYNC_CONCURRENT_STATEMENTS
SQL_MAX_IDENTIFIER_LEN
SQL_PARAM_ARRAY_ROW_COUNTS
SQL_PARAM_ARRAY_SELECTS
SQL_STATIC_CURSOR_ATTRIBUTES1
SQL_STATIC_CURSOR_ATTRIBUTES2
SQL_XOPEN_CLI_YEAR

为 ODBC 3.x 重命名的信息类型

已为 ODBC 3.x 重命名 InfoType 参数的以下值。

旧名称 新名称
SQL_ACTIVE_CONNECTIONS SQL_MAX_DRIVER_CONNECTIONS
SQL_ACTIVE_STATEMENTS SQL_MAX_CONCURRENT_ACTIVITIES
SQL_MAX_OWNER_NAME_LEN SQL_MAX_SCHEMA_NAME_LEN
SQL_MAX_QUALIFIER_NAME_LEN SQL_MAX_CATALOG_NAME_LEN
SQL_ODBC_SQL_OPT_IEF SQL_INTEGRITY
SQL_OWNER_TERM SQL_SCHEMA_TERM
SQL_OWNER_USAGE SQL_SCHEMA_USAGE
SQL_QUALIFIER_LOCATION SQL_CATALOG_LOCATION
SQL_QUALIFIER_NAME_SEPARATOR SQL_CATALOG_NAME_SEPARATOR
SQL_QUALIFIER_TERM SQL_CATALOG_TERM
SQL_QUALIFIER_USAGE SQL_CATALOG_USAGE

ODBC 3.x 中弃用的信息类型

ODBC 3.x 中已弃用 InfoType 参数的以下值。 ODBC 3.x 驱动程序必须继续支持这些信息类型,以便与 ODBC 2.x 应用程序向后兼容。 (有关这些类型的详细信息,请参阅 附录 G 中的 SQLGetInfo 支持 :用于向后兼容性的驱动程序准则。

SQL_FETCH_DIRECTION
SQL_LOCK_TYPES
SQL_ODBC_API_CONFORMANCE
SQL_ODBC_SQL_CONFORMANCE

SQL_POS_OPERATIONS
SQL_POSITIONED_STATEMENTS
SQL_SCROLL_CONCURRENCY
SQL_STATIC_SENSITIVITY

信息类型说明

下表按字母顺序列出每种信息类型、引入它的 ODBC 版本及其说明。

信息类型 ODBC 版本 说明
SQL_ACCESSIBLE_PROCEDURES 1.0 字符串:如果用户可以执行 SQLProcedures 返回的所有过程,则为“Y”;如果可能返回了用户无法执行的过程,则为“N”。
SQL_ACCESSIBLE_TABLES 1.0 一个字符串:如果保证用户对 SQLTable 返回的所有表具有 SELECT 权限,则为“Y”;如果可能返回了用户无法访问的表,则为“N”。
SQL_ACTIVE_ENVIRONMENTS 3.0 一个 SQLUSMALLINT 值,该值指定驱动程序可以支持的最大活动环境数。 如果没有指定的限制或限制未知,则此值设置为零。
SQL_AGGREGATE_FUNCTIONS 3.0 SQLUINTEGER 位掩码枚举对聚合函数的支持:
SQL_AF_ALL
SQL_AF_AVG
SQL_AF_COUNT
SQL_AF_DISTINCT
SQL_AF_MAX
SQL_AF_MIN
SQL_AF_SUM

SQL-92 入口级别一致性驱动程序将始终按支持返回所有这些选项。
SQL_ALTER_DOMAIN 3.0 SQLUINTEGER 位掩码,枚举数据源支持的 SQL-92 中 ALTER DOMAIN 语句中的子句。 SQL-92 完全兼容级别的驱动程序将始终返回所有位掩码。 返回值为“0”表示 不支持 ALTER DOMAIN 语句。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定支持哪些子句:
SQL_AD_ADD_DOMAIN_CONSTRAINT = 支持添加域约束(完全级别)
SQL_AD_ADD_DOMAIN_DEFAULT = <支持更改域集域><默认子句> (完全级别)
命名域约束支持SQL_AD_CONSTRAINT_NAME_DEFINITION = <约束名称定义子句> (中间级别)
SQL_AD_DROP_DOMAIN_CONSTRAINT = <支持删除域约束子句> (完全级别)
SQL_AD_DROP_DOMAIN_DEFAULT = <支持更改域><删除域默认子句> (完全级别)

如果<支持添加域约束>,则以下位指定受支持的<约束属性>(设置SQL_AD_ADD_DOMAIN_CONSTRAINT位):
SQL_AD_ADD_CONSTRAINT_DEFERRABLE (全级别)
SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE (全级别)
SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED (全级别)
SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE(全级别)
SQL_ALTER_TABLE 2.0 一个 SQLUINTEGER 位掩码,用于枚举数据源支持的 ALTER TABLE 语句中的子句。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定支持哪些子句:
SQL_AT_ADD_COLUMN_COLLATION = <支持添加列> 子句,具有指定列排序规则(完整级别)(ODBC 3.0) 的功能
SQL_AT_ADD_COLUMN_DEFAULT = <支持添加列> 子句,具有指定列默认值(FIPS 过渡级别)(ODBC 3.0)
SQL_AT_ADD_COLUMN_SINGLE = <支持添加列> (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_ADD_CONSTRAINT = <支持添加列> 子句,具有指定列约束(FIPS 过渡级别)(ODBC 3.0)
SQL_AT_ADD_TABLE_CONSTRAINT = <支持添加表约束> 子句 (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_CONSTRAINT_NAME_DEFINITION = <命名列和表约束(中间级别)(ODBC 3.0)支持约束名称定义>
SQL_AT_DROP_COLUMN_CASCADE = <支持删除列> CASCADE (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_DROP_COLUMN_DEFAULT = <支持更改列删除列><默认子句> (中间级别) (ODBC 3.0)
SQL_AT_DROP_COLUMN_RESTRICT = <支持删除列> RESTRICT (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE (ODBC 3.0)
SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = <支持删除列> RESTRICT (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_SET_COLUMN_DEFAULT = <支持更改列集列><默认子句> (中间级别) (ODBC 3.0)

如果支持指定列或表约束,则以下位指定支持 <约束属性> (设置SQL_AT_ADD_CONSTRAINT位):
SQL_AT_CONSTRAINT_INITIALLY_DEFERRED (完全级别) (ODBC 3.0)
SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE (完整级别) (ODBC 3.0)
SQL_AT_CONSTRAINT_DEFERRABLE (完全级别) (ODBC 3.0)
SQL_AT_CONSTRAINT_NON_DEFERRABLE (完整级别) (ODBC 3.0)
SQL_ASYNC_DBC_FUNCTIONS 3.8 一个 SQLUINTEGER 值,该值指示驱动程序是否可以在连接句柄上异步执行函数。

SQL_ASYNC_DBC_CAPABLE = 驱动程序可以异步执行连接函数。
SQL_ASYNC_DBC_NOT_CAPABLE = 驱动程序无法异步执行连接函数。
SQL_ASYNC_MODE 3.0 一个 SQLUINTEGER 值,指示驱动程序中的异步支持级别:

SQL_AM_CONNECTION = 支持连接级别异步执行。 与给定连接句柄关联的所有语句句柄都处于异步模式或全部处于同步模式。 连接上的语句句柄不能处于异步模式,而同一连接上的另一个语句句柄处于同步模式,反之亦然。
SQL_AM_STATEMENT = 语句级别异步执行受支持。 与连接句柄关联的某些语句句柄可以处于异步模式,而同一连接上的其他语句句柄处于同步模式。
SQL_AM_NONE = 不支持异步模式。
SQL_ASYNC_NOTIFICATION 3.8 一个 SQLUINTEGER 值,该值指示驱动程序是否支持异步通知:

SQL_ASYNC_NOTIFICATION_CAPABLE = 驱动程序支持异步执行通知。
SQL_ASYNC_NOTIFICATION_NOT_CAPABLE = 驱动程序不支持异步执行通知。

ODBC 异步操作有两类:连接级别异步操作和语句级异步操作。 如果驱动程序返回SQL_ASYNC_NOTIFICATION_CAPABLE,则它必须支持对可以异步执行的所有 API 的通知。
SQL_BATCH_ROW_COUNT 3.0 一个 SQLUINTEGER 位掩码,用于枚举驱动程序相对于行计数可用性的行为。 以下位掩码与信息类型一起使用:

SQL_BRC_ROLLED_UP = 连续 INSERT、DELETE 或 UPDATE 语句的行计数汇总为一个。 如果未设置此位,则行计数可用于每个语句。
SQL_BRC_PROCEDURES = 在存储过程中执行批处理时,行计数(如果有)。 如果行计数可用,则可以汇总或单独可用,具体取决于SQL_BRC_ROLLED_UP位。
SQL_BRC_EXPLICIT = 通过调用 SQLExecuteSQLExecDirect 直接执行批处理时,行计数(如果有)。 如果行计数可用,则可以汇总或单独可用,具体取决于SQL_BRC_ROLLED_UP位。
SQL_BATCH_SUPPORT 3.0 一个 SQLUINTEGER 位掩码,用于枚举驱动程序对批处理的支持。 以下位掩码用于确定支持哪个级别:

SQL_BS_SELECT_EXPLICIT = 驱动程序支持具有结果集生成语句的显式批处理。
SQL_BS_ROW_COUNT_EXPLICIT = 驱动程序支持可以生成行计数语句的显式批处理。
SQL_BS_SELECT_PROC = 驱动程序支持具有结果集生成语句的显式过程。
SQL_BS_ROW_COUNT_PROC = 驱动程序支持可以生成行计数语句的显式过程。
SQL_BOOKMARK_PERSISTENCE 2.0 一个 SQLUINTEGER 位掩码,枚举书签保留的操作。 以下位掩码与标志一起使用,以确定哪些选项书签仍然存在:

SQL_BP_CLOSE = 书签在应用程序使用 SQL_CLOSE 选项调用 SQLFreeStmt 或 SQLCloseCursor 以关闭与语句关联的游标后有效。
SQL_BP_DELETE = 删除该行后行的书签有效。
SQL_BP_DROP = 书签在应用程序调用 SQLFreeHandle 并使用 handleType of SQL_HANDLE_STMT 删除语句后有效。
SQL_BP_TRANSACTION = 书签在应用程序提交或回滚事务后有效。
SQL_BP_UPDATE = 行的书签在更新该行中的任何列(包括键列)后有效。
SQL_BP_OTHER_HSTMT = 与一个语句关联的书签可用于另一个语句。 除非指定了SQL_BP_CLOSE或SQL_BP_DROP,否则第一个语句上的游标必须处于打开状态。
SQL_CATALOG_LOCATION 2.0 一个 SQLUSMALLINT 值,该值指示目录在限定表名中的位置:

SQL_CL_START
SQL_CL_END
例如,Xbase 驱动程序返回SQL_CL_START,因为目录(目录)名称位于表名称的开头,如 \EMPDATA\EMP 中所示。DBF。 ORACLE 服务器驱动程序返回SQL_CL_END,因为目录位于表名的末尾,就像在 ADMIN 中一样。EMP@EMPDATA。

SQL-92 完全一致性驱动程序将始终返回SQL_CL_START。 如果数据源不支持目录,则返回值 0。 若要确定是否支持目录,应用程序使用SQL_CATALOG_NAME信息类型调用 SQLGetInfo

InfoType 已从 ODBC 2.0 InfoType SQL_QUALIFIER_LOCATION重命名为 ODBC 3.0
SQL_CATALOG_NAME 3.0 一个字符串:“Y”(如果服务器支持目录名称);如果不支持,则为“N”。

SQL-92 完全一致性驱动程序将始终返回“Y”。
SQL_CATALOG_NAME_SEPARATOR 1.0 字符串:数据源定义为目录名称和后面限定名称元素之间的分隔符的字符或字符。

如果数据源不支持目录,则返回空字符串。 若要确定是否支持目录,应用程序使用SQL_CATALOG_NAME信息类型调用 SQLGetInfo 。 SQL-92 完全一致性驱动程序将始终返回“.”。

InfoType 已从 ODBC 2.0 InfoType SQL_QUALIFIER_NAME_SEPARATOR重命名为 ODBC 3.0
SQL_CATALOG_TERM 1.0 包含目录数据源供应商名称的字符串;例如,“database”或“directory”。 此字符串可以位于大写、小写或混合大小写中。

如果数据源不支持目录,则返回空字符串。 若要确定是否支持目录,应用程序使用SQL_CATALOG_NAME信息类型调用 SQLGetInfo 。 SQL-92 完全符合级别的驱动程序将始终返回“catalog”。

InfoType 已从 ODBC 2.0 InfoType SQL_QUALIFIER_TERM重命名为 ODBC 3.0
SQL_CATALOG_USAGE 2.0 一个 SQLUINTEGER 位掩码,用于枚举可以使用目录的语句。

以下位掩码用于确定可以使用目录的位置:
SQL_CU_DML_STATEMENTS = 所有数据操作语言语句都支持目录:SELECT、INSERT、UPDATEDELETE;如果受支持,则 SELECT FOR UPDATE 和定位更新和删除语句。
SQL_CU_PROCEDURE_INVOCATION = ODBC 过程调用语句支持目录。
SQL_CU_TABLE_DEFINITION = 所有表定义语句都支持目录:CREATE TABLECREATE VIEWALTER TABLE、DROP TABLEDROP VIEW
SQL_CU_INDEX_DEFINITION = 所有索引定义语句都支持目录: CREATE INDEXDROP INDEX
SQL_CU_PRIVILEGE_DEFINITION = 所有特权定义语句都支持目录: GRANTREVOKE

如果数据源不支持目录,则返回值 0。 若要确定是否支持目录,应用程序使用SQL_CATALOG_NAME信息类型调用 SQLGetInfo 。 SQL-92 完全一致性驱动程序将始终返回设置所有这些位的位掩码。

InfoType 已从 ODBC 2.0 InfoType SQL_QUALIFIER_USAGE重命名为 ODBC 3.0
SQL_COLLATION_SEQ 3.0 排序规则序列的名称。 这是一个字符串,指示此服务器的默认字符集的默认排序规则的名称(例如,“ISO 8859-1”或 EBCDIC)。 如果这是未知的,将返回空字符串。 SQL-92 完全符合级别的驱动程序将始终返回非空字符串。
SQL_COLUMN_ALIAS 2.0 字符串:如果数据源支持列别名,则为“Y”;否则为“N”。

列别名是一个替代名称,可以使用 AS 子句为选择列表中的列指定。 SQL-92 符合入口级别的驱动程序将始终返回“Y”。
SQL_CONCAT_NULL_BEHAVIOR 1.0 一个 SQLUSMALLINT 值,指示数据源如何处理 NULL 值字符数据类型列与非 NULL 值字符数据类型列的串联:
SQL_CB_NULL = 结果为 NULL 值。
SQL_CB_NON_NULL = 结果是非 NULL 值列或列的串联。

SQL-92 符合入口级别的驱动程序将始终返回SQL_CB_NULL。
SQL_CONVERT_BIGINT
SQL_CONVERT_BINARY
SQL_CONVERT_BIT
SQL_CONVERT_CHAR
SQL_CONVERT_GUID
SQL_CONVERT_DATE
SQL_CONVERT_DECIMAL
SQL_CONVERT_DOUBLE
SQL_CONVERT_FLOAT
SQL_CONVERT_INTEGER
SQL_CONVERT_INTERVAL_YEAR_MONTH
SQL_CONVERT_INTERVAL_DAY_TIME
SQL_CONVERT_LONGVARBINARY
SQL_CONVERT_LONGVARCHAR
SQL_CONVERT_NUMERIC
SQL_CONVERT_REAL
SQL_CONVERT_SMALLINT
SQL_CONVERT_TIME
SQL_CONVERT_TIMESTAMP
SQL_CONVERT_TINYINT
SQL_CONVERT_VARBINARY
SQL_CONVERT_VARCHAR
1.0 SQLUINTEGER 位掩码。 位掩码指示数据源支持的转换,以及 InfoType命名的类型数据的 CONVERT 标量函数。 如果位掩码等于零,则数据源不支持从命名类型的数据进行任何转换,包括转换为同一数据类型。

例如,若要确定数据源是否支持SQL_INTEGER数据转换为SQL_BIGINT数据类型,应用程序使用 infoType SQL_CONVERT_INTEGER 调用 SQLGetInfo 应用程序使用返回的位掩码和SQL_CVT_BIGINT执行 AND 操作。 如果生成的值为非零,则支持转换。

以下位掩码用于确定支持哪些转换:
SQL_CVT_BIGINT (ODBC 1.0)
SQL_CVT_BINARY (ODBC 1.0)
SQL_CVT_BIT (ODBC 1.0)
SQL_CVT_GUID (ODBC 3.5)
SQL_CVT_CHAR (ODBC 1.0)
SQL_CVT_DATE (ODBC 1.0)
SQL_CVT_DECIMAL (ODBC 1.0)
SQL_CVT_DOUBLE (ODBC 1.0)
SQL_CVT_FLOAT (ODBC 1.0)
SQL_CVT_INTEGER (ODBC 1.0)
SQL_CVT_INTERVAL_YEAR_MONTH (ODBC 3.0)
SQL_CVT_INTERVAL_DAY_TIME (ODBC 3.0)
SQL_CVT_LONGVARBINARY (ODBC 1.0)
SQL_CVT_LONGVARCHAR (ODBC 1.0)
SQL_CVT_NUMERIC (ODBC 1.0)
SQL_CVT_REAL (ODBC 1.0)
SQL_CVT_SMALLINT (ODBC 1.0)
SQL_CVT_TIME (ODBC 1.0)
SQL_CVT_TIMESTAMP (ODBC 1.0)
SQL_CVT_TINYINT (ODBC 1.0)
SQL_CVT_VARBINARY (ODBC 1.0)
SQL_CVT_VARCHAR (ODBC 1.0)
SQL_CONVERT_FUNCTIONS 1.0 一个 SQLUINTEGER 位掩码,用于枚举驱动程序和关联的数据源支持的标量转换函数。

以下位掩码用于确定支持哪些转换函数:
SQL_FN_CVT_CASTSQL_FN_CVT_CONVERT
SQL_CORRELATION_NAME 1.0 一个 SQLUSMALLINT 值,该值指示是否支持表关联名称:
SQL_CN_NONE = 不支持相关名称。
SQL_CN_DIFFERENT = 支持相关名称,但必须与它们表示的表的名称不同。
SQL_CN_ANY = 相关名称受支持,可以是任何有效的用户定义名称。

SQL-92 符合入口级别的驱动程序将始终返回SQL_CN_ANY。
SQL_CREATE_ASSERTION 3.0 SQLUINTEGER 位掩码,枚举数据源支持的 SQL-92 中 CREATE ASSERTION 语句中的子句。

以下位掩码用于确定支持哪些子句:
SQL_CA_CREATE_ASSERTION

如果支持显式指定约束属性的功能(请参阅SQL_ALTER_TABLE和SQL_CREATE_TABLE信息类型),则以下位指定支持的约束属性:
SQL_CA_CONSTRAINT_INITIALLY_DEFERRED
SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE
SQL_CA_CONSTRAINT_DEFERRABLE
SQL_CA_CONSTRAINT_NON_DEFERRABLE

SQL-92 完全一致性驱动程序将始终按支持返回所有这些选项。 返回值为“0”表示 不支持 CREATE ASSERTION 语句。
SQL_CREATE_CHARACTER_SET 3.0 一个 SQLUINTEGER 位掩码,用于枚举 CREATE CHARACTER SET 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_CCS_CREATE_CHARACTER_SET
SQL_CCS_COLLATE_CLAUSE
SQL_CCS_LIMITED_COLLATION

SQL-92 完全一致性驱动程序将始终按支持返回所有这些选项。 返回值为“0”表示 不支持 CREATE CHARACTER SET 语句。
SQL_CREATE_COLLATION 3.0 一个 SQLUINTEGER 位掩码,用于枚举 CREATE COLLATION 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_CCOL_CREATE_COLLATION

SQL-92 完全符合级别的驱动程序将始终按支持返回此选项。 返回值为“0”表示 不支持 CREATE COLLATION 语句。
SQL_CREATE_DOMAIN 3.0 SQLUINTEGER 位掩码,枚举数据源支持的 SQL-92 中 CREATE DOMAIN 语句中的子句。

以下位掩码用于确定支持哪些子句:
SQL_CDO_CREATE_DOMAIN = 支持 CREATE DOMAIN 语句(中间级别)。
SQL_CDO_CONSTRAINT_NAME_DEFINITION = <命名域约束支持约束名称定义> (中间级别)。

以下位指定创建列约束的功能:
SQL_CDO_DEFAULT = 支持指定域约束(中间级别)
SQL_CDO_CONSTRAINT = 支持指定域默认值(中间级别)
SQL_CDO_COLLATION = 支持指定域排序规则(完全级别)

如果支持指定域约束,则以下位指定受支持的约束属性(已设置SQL_CDO_DEFAULT):
SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED (全级别)
SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE(全级别)
SQL_CDO_CONSTRAINT_DEFERRABLE(全级别)
SQL_CDO_CONSTRAINT_NON_DEFERRABLE (全级别)

返回值为“0”表示 不支持 CREATE DOMAIN 语句。
SQL_CREATE_SCHEMA 3.0 SQLUINTEGER 位掩码,枚举数据源支持的 SQL-92 中 CREATE SCHEMA 语句中的子句。

以下位掩码用于确定支持哪些子句:
SQL_CS_CREATE_SCHEMA
SQL_CS_AUTHORIZATION
SQL_CS_DEFAULT_CHARACTER_SET

SQL-92 中级一致性驱动程序将始终返回受支持的SQL_CS_CREATE_SCHEMA和SQL_CS_AUTHORIZATION选项。 这些属性还必须在 SQL-92 入口级别得到支持,但不一定作为 SQL 语句。 SQL-92 完全一致性驱动程序将始终按支持返回所有这些选项。
SQL_CREATE_TABLE 3.0 一个 SQLUINTEGER 位掩码,用于枚举 CREATE TABLE 语句中的子句,如数据源支持的 SQL-92 中定义。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定支持哪些子句:
SQL_CT_CREATE_TABLE = 支持 CREATE TABLE 语句。 (入门级别)
SQL_CT_TABLE_CONSTRAINT = 支持指定表约束(FIPS 过渡级别)
SQL_CT_CONSTRAINT_NAME_DEFINITION = 命名 <列和表约束支持约束名称定义> 子句(中间级别)

以下位指定创建临时表的功能:
SQL_CT_COMMIT_PRESERVE = 提交时保留已删除的行。 (全级别)
SQL_CT_COMMIT_DELETE = 提交时删除已删除的行。 (全级别)
SQL_CT_GLOBAL_TEMPORARY = 可以创建全局临时表。 (全级别)
SQL_CT_LOCAL_TEMPORARY = 可以创建本地临时表。 (全级别)

以下位指定创建列约束的功能:
SQL_CT_COLUMN_CONSTRAINT = 支持指定列约束 (FIPS 过渡级别)
SQL_CT_COLUMN_DEFAULT = 支持指定列默认值(FIPS 过渡级别)
SQL_CT_COLUMN_COLLATION = 支持指定列排序规则 (完全级别)

如果支持指定列或表约束,则以下位指定支持的约束属性:
SQL_CT_CONSTRAINT_INITIALLY_DEFERRED (全级别)
SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE (全级别)
SQL_CT_CONSTRAINT_DEFERRABLE(全级别)
SQL_CT_CONSTRAINT_NON_DEFERRABLE (全级别)
SQL_CREATE_TRANSLATION 3.0 一个 SQLUINTEGER 位掩码,用于枚举 CREATE TRANSLATION 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_CTR_CREATE_TRANSLATION

SQL-92 完全符合级别的驱动程序将始终按支持返回这些选项。 返回值为“0”表示 不支持 CREATE TRANSLATION 语句。
SQL_CREATE_VIEW 3.0 一个 SQLUINTEGER 位掩码,用于枚举 CREATE VIEW 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_CV_CREATE_VIEW
SQL_CV_CHECK_OPTION
SQL_CV_CASCADED
SQL_CV_LOCAL

返回值为“0”表示 不支持 CREATE VIEW 语句。

SQL-92 入口级别一致性驱动程序将始终返回受支持的SQL_CV_CREATE_VIEW和SQL_CV_CHECK_OPTION选项。

SQL-92 完全一致性驱动程序将始终按支持返回所有这些选项。
SQL_CURSOR_COMMIT_BEHAVIOR 1.0 一个 SQLUSMALLINT 值,该值指示 COMMIT 操作如何影响数据源中的游标和准备语句(提交事务时数据源的行为)。

此属性的值将反映下一设置的当前状态:SQL_COPT_SS_PRESERVE_CURSORS。
SQL_CB_DELETE = 关闭游标并删除已准备的语句。 若要再次使用游标,应用程序必须重新准备并重新执行该语句。
SQL_CB_CLOSE = 关闭游标。 对于准备好的语句,应用程序可以在语句上调用 SQLExecute ,而无需再次调用 SQLPrepare 。 SQL ODBC 驱动程序的默认值为SQL_CB_CLOSE。 这意味着在提交事务时,SQL ODBC 驱动程序将关闭游标。
SQL_CB_PRESERVE = 将游标保留与 COMMIT 操作之前相同的位置。 应用程序可以继续提取数据,也可以关闭游标并重新执行语句,而无需重新准备该语句。
SQL_CURSOR_ROLLBACK_BEHAVIOR 1.0 一个 SQLUSMALLINT 值,该值指示 ROLLBACK 操作如何影响数据源中的游标和准备语句:
SQL_CB_DELETE = 关闭游标并删除已准备的语句。 若要再次使用游标,应用程序必须重新准备并重新执行该语句。
SQL_CB_CLOSE = 关闭游标。 对于准备好的语句,应用程序可以在语句上调用 SQLExecute ,而无需再次调用 SQLPrepare
SQL_CB_PRESERVE = 保留游标的位置与 ROLLBACK 操作之前的位置相同。 应用程序可以继续提取数据,也可以关闭游标并重新执行语句,而无需重新准备该语句。
SQL_CURSOR_SENSITIVITY 3.0 一个 SQLUINTEGER 值,指示对游标敏感度的支持:
SQL_INSENSITIVE = 语句句柄上的所有游标都显示结果集,而不会反映同一事务中任何其他游标对它所做的任何更改。
SQL_UNSPECIFIED = 未指定语句句柄上的游标是否对同一事务中的另一个游标对结果集所做的更改可见。 语句句柄上的游标可能会使无、某些或全部此类更改可见。
SQL_SENSITIVE = 游标对同一事务中其他游标所做的更改敏感。

SQL-92 符合入口级别的驱动程序将始终返回受支持的SQL_UNSPECIFIED选项。

SQL-92 完全一致性驱动程序将始终返回受支持的SQL_INSENSITIVE选项。
SQL_DATA_SOURCE_NAME 1.0 包含连接期间使用的数据源名称的字符串。 如果应用程序称为 SQLConnect,则这是 szDSN 参数的值。 如果名为 SQLDriverConnect 或 SQLBrowseConnect 的应用程序,则这是传递给驱动程序连接字符串中的 DSN 关键字的值。 如果连接字符串不包含 DSN 关键字(例如当它包含 DRIVER 关键字时),则为空字符串。
SQL_DATA_SOURCE_READ_ONLY 1.0 字符串。 如果数据源设置为只读模式,则为“Y”;否则为“N”。

此特征仅适用于数据源本身;它不是启用数据源访问的驱动程序的特征。 可读写的驱动程序与只读数据源一起使用。 如果驱动程序是只读的,则其所有数据源必须是只读的,并且必须返回SQL_DATA_SOURCE_READ_ONLY。
SQL_DATABASE_NAME 1.0 如果数据源定义了名为“database”的命名对象,则为正在使用的当前数据库的名称的字符串。

在 ODBC 3.x 中,通过调用 SQLGetConnectAttr 和属性参数SQL_ATTR_CURRENT_CATALOG,也可以返回为此 InfoType 返回的值。
SQL_DATETIME_LITERALS 3.0 枚举数据源支持的 SQL-92 日期/时间文本的 SQLUINTEGER 位掩码。 请注意,这些是 SQL-92 规范中列出的日期/时间文本,与 ODBC 定义的 datetime 文本转义子句分开。 有关 ODBC datetime 文本转义子句的详细信息,请参阅 日期、时间和时间戳文本

FIPS 过渡级别一致性驱动程序将始终返回以下列表中的位掩码中的“1”值。 值为“0”表示不支持 SQL-92 日期/时间文本。

以下位掩码用于确定支持哪些文本:
SQL_DL_SQL92_DATE
SQL_DL_SQL92_TIME
SQL_DL_SQL92_TIMESTAMP
SQL_DL_SQL92_INTERVAL_YEAR
SQL_DL_SQL92_INTERVAL_MONTH
SQL_DL_SQL92_INTERVAL_DAY
SQL_DL_SQL92_INTERVAL_HOUR
SQL_DL_SQL92_INTERVAL_MINUTE
SQL_DL_SQL92_INTERVAL_SECOND
SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH
SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR
SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE
SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND
SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE
SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND
SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND
SQL_DBMS_NAME 1.0 一个字符串,其中包含驱动程序访问的 DBMS 产品的名称。
SQL_DBMS_VER 1.0 一个字符串,指示驱动程序访问的 DBMS 产品的版本。 版本采用 ##.#.####,其中前两位是主要版本,接下来的两位数是次要版本,最后四位是发布版本。 驱动程序必须以此形式呈现 DBMS 产品版本,但也可以追加 DBMS 产品特定的版本。 例如,“04.01.0000 Rdb 4.1”。
SQL_DDL_INDEX 3.0 一个 SQLUINTEGER 值,指示支持创建和删除索引:
SQL_DI_CREATE_INDEX
SQL_DI_DROP_INDEX
SQL_DEFAULT_TXN_ISOLATION 1.0 一个 SQLUINTEGER 值,该值指示驱动程序或数据源支持的默认事务隔离级别;如果数据源不支持事务,则为零。 以下术语用于定义事务隔离级别:
脏读 事务 1 更改行。 事务 2 在事务 1 提交更改之前读取更改的行。 如果事务 1 回滚更改,则事务 2 将读取一个被视为从未存在的行。
不可重复的读取 事务 1 读取行。 事务 2 更新或删除该行并提交此更改。 如果事务 1 尝试重新读取该行,它将接收不同的行值或发现该行已被删除。
虚拟 事务 1 读取一组满足某些搜索条件的行。 事务 2 通过与搜索条件匹配的插入或更新生成一行或多行。 如果事务 1 重新执行读取行的语句,它将接收一组不同的行。

如果数据源支持事务,驱动程序将返回以下位掩码之一:
SQL_TXN_READ_UNCOMMITTED = 脏读取、不可重复读取和幻影是可能的。
SQL_TXN_READ_COMMITTED = 无法读取脏读。 可以读取不可重复的读取和幻影。
SQL_TXN_REPEATABLE_READ = 不可重复读取和不可重复读取。 有可能有幻影。
SQL_TXN_SERIALIZABLE = 事务可序列化。 可序列化事务不允许脏读取、不可重复读取或幻影。
SQL_DESCRIBE_PARAMETER 3.0 字符串:如果可以描述参数,则为“Y”;“N”,如果不是。

SQL-92 完全一致性驱动程序通常返回“Y”,因为它将支持 DESCRIBE INPUT 语句。 由于这不会直接指定基础 SQL 支持,但是,即使在 SQL-92 完全符合级别的驱动程序中,也不支持描述参数。
SQL_DM_VER 3.0 包含驱动程序管理器版本的字符串。 版本的格式为 ##.##.#.###,其中:
第一组两位数字是主要 ODBC 版本,由常量SQL_SPEC_MAJOR提供。
第二组两位数字是次要 ODBC 版本,由常量SQL_SPEC_MINOR提供。
第三组四位数字是驱动程序管理器主要内部版本号。
最后一组四位数字是驱动程序管理器次要内部版本号。
Windows 7 驱动程序管理器版本为 03.80。 Windows 8 驱动程序管理器版本为 03.81。
SQL_DRIVER_AWARE_POOLING_SUPPORTED 3.8 一个 SQLUINTEGER 值,该值指示驱动程序是否支持驱动程序感知池。 (有关详细信息,请参阅 驱动程序感知连接池

SQL_DRIVER_AWARE_POOLING_CAPABLE指示驱动程序可以支持驱动程序感知池机制。
SQL_DRIVER_AWARE_POOLING_NOT_CAPABLE指示驱动程序不支持驱动程序感知池机制。

驱动程序不需要实现SQL_DRIVER_AWARE_POOLING_SUPPORTED驱动程序管理器将不遵循驱动程序的返回值。
SQL_DRIVER_HDBCSQL_DRIVER_HENV 1.0 SQLULEN 值,驱动程序的环境句柄或连接句柄,由参数 InfoType 确定。

这些信息类型由驱动程序管理器单独实现。
SQL_DRIVER_HDESC 3.0 SQLULEN 值,驱动程序的描述符句柄由驱动程序管理器的描述符句柄确定,该句柄必须在应用程序中的 *InfoValuePtr 中的输入上传递。 在这种情况下, InfoValuePtr 既是输入和输出参数。 在 *InfoValuePtr 中传递的输入描述符句柄必须在 ConnectionHandle显式或隐式分配。

应用程序应在调用 具有此信息类型的 SQLGetInfo 之前创建驱动程序管理器的描述符句柄的副本,以确保不会在输出上覆盖句柄。

此信息类型由驱动程序管理器单独实现。
SQL_DRIVER_HLIB 2.0 SQLULEN 值, 即加载库在 Microsoft Windows 操作系统上加载驱动程序 DLL 或在另一个操作系统上等效时返回到驱动程序管理器的后退 值。 句柄仅对调用 SQLGetInfo 中指定的连接句柄有效。

此信息类型由驱动程序管理器单独实现。
SQL_DRIVER_HSTMT 1.0 由 Driver Manager 语句句柄确定的驱动程序语句句柄的 SQLULEN 值,必须在应用程序中的 *InfoValuePtr 中传递输入。 在这种情况下, InfoValuePtr 既是输入和输出参数。 在 *InfoValuePtr 中传递的输入语句句柄必须在参数 ConnectionHandle 上分配。

应用程序应在调用 包含此信息类型的 SQLGetInfo 之前创建 Driver Manager 语句句柄的副本,以确保在输出时不会覆盖句柄。

此信息类型由驱动程序管理器单独实现。
SQL_DRIVER_NAME 1.0 一个字符串,其中包含用于访问数据源的驱动程序的文件名。
SQL_DRIVER_ODBC_VER 2.0 具有驱动程序支持的 ODBC 版本的字符串。 版本为 ##.#,其中前两位是主要版本,接下来的两位数是次要版本。 SQL_SPEC_MAJOR和SQL_SPEC_MINOR定义主要版本号和次要版本号。 对于本手册中所述的 ODBC 版本,这些版本为 3 和 0,驱动程序应返回“03.00”。

ODBC 驱动程序管理器不会修改 SQLGetInfo(SQL_DRIVER_ODBC_VER) 的返回值,以保持现有应用程序的向后兼容性。 驱动程序指定将返回哪些值。 但是,当应用程序调用 SQLSetEnvAttr 将SQL_ATTR_ODBC_VERSION设置为 3.8 时,支持 C 数据类型扩展性的驱动程序必须返回 3.8(或更高版本)。 有关详细信息,请参阅 ODBC 中的 C 数据类型
SQL_DRIVER_VER 1.0 包含驱动程序版本的字符串,以及驱动程序的说明(可选)。 最低版本为 ##.##.#,其中前两位是主要版本,接下来的两位数字是次要版本,最后四位是发布版本。
SQL_DROP_ASSERTION 3.0 SQLUINTEGER 位掩码,枚举 DROP ASSERTION 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_DA_DROP_ASSERTION

SQL-92 完全符合级别的驱动程序将始终按支持返回此选项。
SQL_DROP_CHARACTER_SET 3.0 SQLUINTEGER 位掩码,枚举 DROP CHARACTER SET 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_DCS_DROP_CHARACTER_SET

SQL-92 完全符合级别的驱动程序将始终按支持返回此选项。
SQL_DROP_COLLATION 3.0 SQLUINTEGER 位掩码,枚举 DROP COLLATION 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_DC_DROP_COLLATION

SQL-92 完全符合级别的驱动程序将始终按支持返回此选项。
SQL_DROP_DOMAIN 3.0 一个 SQLUINTEGER 位掩码,用于枚举 DROP DOMAIN 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_DD_DROP_DOMAIN
SQL_DD_CASCADE
SQL_DD_RESTRICT

SQL-92 中级一致性驱动程序将始终按支持返回所有这些选项。
SQL_DROP_SCHEMA 3.0 SQLUINTEGER 位掩码,枚举 DROP SCHEMA 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_DS_DROP_SCHEMA
SQL_DS_CASCADE
SQL_DS_RESTRICT

SQL-92 中级一致性驱动程序将始终按支持返回所有这些选项。
SQL_DROP_TABLE 3.0 SQLUINTEGER 位掩码,枚举 DROP TABLE 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_DT_DROP_TABLE
SQL_DT_CASCADE
SQL_DT_RESTRICT

FIPS 过渡级别一致性驱动程序将始终按支持返回所有这些选项。
SQL_DROP_TRANSLATION 3.0 SQLUINTEGER 位掩码,枚举 DROP TRANSLATION 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_DTR_DROP_TRANSLATION

SQL-92 完全符合级别的驱动程序将始终按支持返回此选项。
SQL_DROP_VIEW 3.0 SQLUINTEGER 位掩码,枚举 DROP VIEW 语句中的子句,如数据源支持的 SQL-92 中定义。

以下位掩码用于确定支持哪些子句:
SQL_DV_DROP_VIEW
SQL_DV_CASCADE
SQL_DV_RESTRICT

FIPS 过渡级别一致性驱动程序将始终按支持返回所有这些选项。
SQL_DYNAMIC_CURSOR_ATTRIBUTES1 3.0 一个 SQLUINTEGER 位掩码,描述驱动程序支持的动态游标的属性。 此位掩码包含属性的第一个子集;对于第二个子集,请参阅SQL_DYNAMIC_CURSOR_ATTRIBUTES2。

以下位掩码用于确定支持哪些属性:
SQL_CA1_NEXT = 当游标是动态游标时,对 SQLFetchScroll 的调用支持SQL_FETCH_NEXT的 FetchOrientation 参数。
SQL_CA1_ABSOLUTE = SQL_FETCH_FIRST、SQL_FETCH_LAST 和 SQL_FETCH_ABSOLUTE 的 FetchOrientation 参数在游标是动态游标时对 SQLFetchScroll 的调用中受支持。 (将提取的行集独立于当前游标位置。
SQL_CA1_RELATIVE = 当游标为动态游标时,对 SQLFetchScroll 的调用支持SQL_FETCH_PRIOR和SQL_FETCH_RELATIVE的 FetchOrientation 参数。 (将提取的行集取决于当前游标位置。请注意,这与SQL_FETCH_NEXT分开,因为在仅向前游标中,仅支持SQL_FETCH_NEXT。
SQL_CA1_BOOKMARK = 当游标为动态游标时,对 SQLFetchScroll 的调用支持SQL_FETCH_BOOKMARK的 FetchOrientation 参数。
SQL_CA1_LOCK_EXCLUSIVE = 当游标是动态游标时,对 SQLSetPos 的调用支持SQL_LOCK_EXCLUSIVE的 LockType 参数。
SQL_CA1_LOCK_NO_CHANGE = 当游标是动态游标时,对 SQLSetPos 的调用支持SQL_LOCK_NO_CHANGE的 LockType 参数。
SQL_CA1_LOCK_UNLOCK = 当游标是动态游标时,对 SQLSetPos 的调用支持SQL_LOCK_UNLOCK的 LockType 参数。
SQL_CA1_POS_POSITION = 当游标是动态游标时,对 SQLSetPos 的调用支持SQL_POSITION的操作参数。
SQL_CA1_POS_UPDATE = 当游标是动态游标时,对 SQLSetPos 的调用支持SQL_UPDATE的操作参数。
SQL_CA1_POS_DELETE = 当游标是动态游标时,对 SQLSetPos 的调用支持SQL_DELETE的操作参数。
SQL_CA1_POS_REFRESH = 当游标为动态游标时,对 SQLSetPos 的调用支持SQL_REFRESH的操作参数。
SQL_CA1_POSITIONED_UPDATE = 当游标是动态游标时,支持 UPDATE WHERE CURRENT OF SQL 语句。 (SQL-92 符合入口级别的驱动程序将始终将此选项作为支持返回。
SQL_CA1_POSITIONED_DELETE = 当游标是动态游标时,支持 DELETE WHERE CURRENT OF SQL 语句。 (SQL-92 符合入口级别的驱动程序将始终将此选项作为支持返回。
SQL_CA1_SELECT_FOR_UPDATE = 当游标是动态游标时,支持 SELECT FOR UPDATE SQL 语句。 (SQL-92 符合入口级别的驱动程序将始终将此选项作为支持返回。
SQL_CA1_BULK_ADD = 当游标是动态游标时,对 SQLBulkOperations 的调用支持SQL_ADD的操作参数。
SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 当游标是动态游标时,对 SQLBulkOperations 的调用支持SQL_UPDATE_BY_BOOKMARK的操作参数。
SQL_CA1_BULK_DELETE_BY_BOOKMARK = 当游标是动态游标时,对 SQLBulkOperations 的调用支持SQL_DELETE_BY_BOOKMARK的操作参数。
SQL_CA1_BULK_FETCH_BY_BOOKMARK = 当游标是动态游标时,对 SQLBulkOperations 的调用支持SQL_FETCH_BY_BOOKMARK的操作参数。

SQL-92 中级一致性驱动程序通常返回受支持的SQL_CA1_NEXT、SQL_CA1_ABSOLUTE和SQL_CA1_RELATIVE选项,因为它支持通过嵌入式 SQL FETCH 语句滚动游标。 由于这不直接确定基础 SQL 支持,因此,即使对于 SQL-92 中间级别一致性驱动程序,也可以支持可滚动游标。
SQL_DYNAMIC_CURSOR_ATTRIBUTES2 3.0 一个 SQLUINTEGER 位掩码,描述驱动程序支持的动态游标的属性。 此位掩码包含属性的第二个子集;对于第一个子集,请参阅SQL_DYNAMIC_CURSOR_ATTRIBUTES1。

以下位掩码用于确定支持哪些属性:
SQL_CA2_READ_ONLY_CONCURRENCY = 支持只读动态游标,其中不允许更新。 (动态游标可以SQL_CONCUR_READ_ONLY SQL_ATTR_CONCURRENCY语句属性)。
SQL_CA2_LOCK_CONCURRENCY = 一个动态游标,该游标使用足够低级别的锁定来确保可以更新行。 (SQL_ATTR_CONCURRENCY语句属性可以为动态游标SQL_CONCUR_LOCK。这些锁必须与SQL_ATTR_TXN_ISOLATION连接属性设置的事务隔离级别一致。
SQL_CA2_OPT_ROWVER_CONCURRENCY = 支持使用乐观并发控制比较行版本的动态游标。 (SQL_ATTR_CONCURRENCY语句属性可以为动态游标SQL_CONCUR_ROWVER。
SQL_CA2_OPT_VALUES_CONCURRENCY = 支持使用乐观并发控制比较值的动态游标。 (SQL_ATTR_CONCURRENCY语句属性可以为动态游标SQL_CONCUR_VALUES。
SQL_CA2_SENSITIVITY_ADDITIONS = 添加的行对动态游标可见;游标可以滚动到这些行。 (这些行添加到游标的位置依赖于驱动程序。
SQL_CA2_SENSITIVITY_DELETIONS = 已删除的行不再可用于动态游标,并且不会在结果集中留下“洞”;动态游标从已删除行滚动后,它无法返回到该行。
SQL_CA2_SENSITIVITY_UPDATES = 动态游标可以看到行更新;如果动态游标从中滚动并返回到更新的行,则游标返回的数据是更新的数据,而不是原始数据。
SQL_CA2_MAX_ROWS_SELECT = 当游标是动态游标时,SQL_ATTR_MAX_ROWS语句属性会影响 SELECT 语句。
SQL_CA2_MAX_ROWS_INSERT = 当游标是动态游标时,SQL_ATTR_MAX_ROWS语句属性会影响 INSERT 语句。
SQL_CA2_MAX_ROWS_DELETE = 当游标是动态游标时,SQL_ATTR_MAX_ROWS语句属性会影响 DELETE 语句。
SQL_CA2_MAX_ROWS_UPDATE = 当游标是动态游标时,SQL_ATTR_MAX_ROWS语句属性会影响 UPDATE 语句。
SQL_CA2_MAX_ROWS_CATALOG = 当游标是动态游标时,SQL_ATTR_MAX_ROWS语句属性会影响 CATALOG 结果集。
SQL_CA2_MAX_ROWS_AFFECTS_ALL = 当游标为动态游标时,SQL_ATTR_MAX_ROWS语句属性会影响 SELECTINSERTDELETEUPDATE 语句以及 CATALOG 结果集。
SQL_CA2_CRC_EXACT = 当游标是动态游标时,SQL_DIAG_CURSOR_ROW_COUNT诊断字段中提供确切的行计数。
SQL_CA2_CRC_APPROXIMATE = 当游标是动态游标时,SQL_DIAG_CURSOR_ROW_COUNT诊断字段中提供了近似行计数。
SQL_CA2_SIMULATE_NON_UNIQUE = 驱动程序不能保证模拟定位更新或删除语句在游标是动态游标时仅影响一行;这是应用程序保证这一点的责任。 (如果语句影响多行, SQLExecuteSQLExecDirect 返回 SQLSTATE 01001 [游标操作冲突]。)若要设置此行为,应用程序会调用 SQLSetStmtAttr ,并将SQL_ATTR_SIMULATE_CURSOR属性设置为SQL_SC_NON_UNIQUE。
SQL_CA2_SIMULATE_TRY_UNIQUE = 驱动程序尝试保证模拟定位更新或删除语句仅在游标是动态游标时影响一行。 驱动程序始终执行此类语句,即使它们可能会影响多个行,例如没有唯一键时也是如此。 (如果语句影响多行, SQLExecuteSQLExecDirect 返回 SQLSTATE 01001 [游标操作冲突]。)若要设置此行为,应用程序调用 SQL_ATTR_SIMULATE_CURSOR属性设置为SQL_SC_TRY_UNIQUE的 SQLSetStmtAttr
SQL_CA2_SIMULATE_UNIQUE = 驱动程序保证模拟定位更新或删除语句仅在游标是动态游标时影响一行。 如果驱动程序无法保证给定语句的这一点, SQLExecDirectSQLPrepare 将返回 SQLSTATE 01001(游标操作冲突)。 若要设置此行为,应用程序调用 SQL_ATTR_SIMULATE_CURSOR属性设置为SQL_SC_UNIQUE的 SQLSetStmtAttr
SQL_EXPRESSIONS_IN_ORDERBY 1.0 字符串:如果数据源支持 ORDER BY 列表中的表达式,则为“Y”;如果不是,则为“N”。
SQL_FILE_USAGE 2.0 一个 SQLUSMALLINT 值,该值指示单层驱动程序如何直接处理数据源中的文件:
SQL_FILE_NOT_SUPPORTED = 驱动程序不是单层驱动程序。 例如,ORACLE 驱动程序是一个两层驱动程序。
SQL_FILE_TABLE = 单层驱动程序将数据源中的文件视为表。 例如,Xbase 驱动程序将每个 Xbase 文件视为表。
SQL_FILE_CATALOG = 单层驱动程序将数据源中的文件视为目录。 例如,Microsoft Access 驱动程序将每个 Microsoft Access 文件视为完整的数据库。

应用程序可能使用此方式来确定用户如何选择数据。 例如,Xbase 用户通常将数据存储在文件中,而 ORACLE 和 Microsoft Access 用户通常将数据存储在表中。

当用户选择 Xbase 数据源时,应用程序可以显示 Windows 文件打开 的常用对话框;当用户选择Microsoft Access 或 ORACLE 数据源时,应用程序可以显示自定义 的“选择表 ”对话框。
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 3.0 SQLUINTEGER 位掩码,描述驱动程序支持的仅向前游标的属性。 此位掩码包含属性的第一个子集;对于第二个子集,请参阅SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2。

以下位掩码用于确定支持哪些属性:
SQL_CA1_NEXT
SQL_CA1_LOCK_EXCLUSIVE
SQL_CA1_LOCK_NO_CHANGE
SQL_CA1_LOCK_UNLOCK
SQL_CA1_POS_POSITION
SQL_CA1_POS_UPDATE
SQL_CA1_POS_DELETE
SQL_CA1_POS_REFRESH
SQL_CA1_POSITIONED_UPDATE
SQL_CA1_POSITIONED_DELETE
SQL_CA1_SELECT_FOR_UPDATE
SQL_CA1_BULK_ADD
SQL_CA1_BULK_UPDATE_BY_BOOKMARK
SQL_CA1_BULK_DELETE_BY_BOOKMARK
SQL_CA1_BULK_FETCH_BY_BOOKMARK

有关这些位掩码的说明,请参阅SQL_DYNAMIC_CURSOR_ATTRIBUTES1(并将“仅向前游标”替换为说明中的“动态游标” )。
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 3.0 SQLUINTEGER 位掩码,描述驱动程序支持的仅向前游标的属性。 此位掩码包含属性的第二个子集;有关第一个子集,请参阅SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1。

以下位掩码用于确定支持哪些属性:
SQL_CA2_READ_ONLY_CONCURRENCY
SQL_CA2_LOCK_CONCURRENCY
SQL_CA2_OPT_ROWVER_CONCURRENCY
SQL_CA2_OPT_VALUES_CONCURRENCY
SQL_CA2_SENSITIVITY_ADDITIONS
SQL_CA2_SENSITIVITY_DELETIONS
SQL_CA2_SENSITIVITY_UPDATES
SQL_CA2_MAX_ROWS_SELECT
SQL_CA2_MAX_ROWS_INSERT
SQL_CA2_MAX_ROWS_DELETE
SQL_CA2_MAX_ROWS_UPDATE
SQL_CA2_MAX_ROWS_CATALOG
SQL_CA2_MAX_ROWS_AFFECTS_ALL
SQL_CA2_CRC_EXACT
SQL_CA2_CRC_APPROXIMATE
SQL_CA2_SIMULATE_NON_UNIQUE
SQL_CA2_SIMULATE_TRY_UNIQUE
SQL_CA2_SIMULATE_UNIQUE

有关这些位掩码的说明,请参阅SQL_DYNAMIC_CURSOR_ATTRIBUTES2(并将“仅向前游标”替换为说明中的“动态游标”。
SQL_GETDATA_EXTENSIONS 2.0 SQLUINTEGER 位掩码枚举 SQLGetData扩展。

以下位掩码与标志一起使用,以确定驱动程序支持 SQLGetData 的常见扩展:
SQL_GD_ANY_COLUMN = SQLGetData 可以调用任何未绑定列,包括最后一个绑定列之前的列。 请注意,除非还返回SQL_GD_ANY_ORDER,否则必须按升序列号的顺序调用列。
SQL_GD_ANY_ORDER = 可以按任意顺序为未绑定列调用 SQLGetData 。 请注意, 除非还返回SQL_GD_ANY_COLUMN,否则只能对最后一个绑定列之后的列调用 SQLGetData
SQL_GD_BLOCK = SQLGetData 可以在块(其中行集大小大于 1)的块中的任何行中为未绑定列调用 SQLGetData 。在定位 到具有 SQLSetPos 的行之后。
SQL_GD_BOUND = SQLGetData 除了未绑定列外,还可以为绑定列调用。 驱动程序无法返回此值,除非它还返回SQL_GD_ANY_COLUMN。
SQL_GD_OUTPUT_PARAMS = SQLGetData 可以调用以返回输出参数值。 有关详细信息,请参阅 使用 SQLGetData 检索输出参数

SQLGetData 仅需要从最后一个绑定列之后发生的未绑定列返回数据,按增加列号的顺序调用,并且不在行块中的行中。

如果驱动程序支持书签(固定长度或可变长度),则它必须支持对列 0 调用 SQLGetData 。 无论驱动程序使用 SQL_GETDATA_EXTENSIONS InfoType 调用 SQLGetInfo 返回什么,都需要此支持。
SQL_GROUP_BY 2.0 一个 SQLUSMALLINT 值,该值指定 GROUP BY 子句中的列与选择列表中的非聚合列之间的关系:
SQL_GB_COLLATE = 可以在 每个分组列的末尾指定 COLLATE 子句。 (ODBC 3.0)
SQL_GB_NOT_SUPPORTED = GROUP BY 子句不受支持。 (ODBC 2.0)
SQL_GB_GROUP_BY_EQUALS_SELECT = GROUP BY 子句必须包含选择列表中的所有非聚合列。 它不能包含任何其他列。 例如, SELECT DEPT、MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT。 (ODBC 2.0)
SQL_GB_GROUP_BY_CONTAINS_SELECT = GROUP BY 子句必须包含选择列表中的所有非聚合列。 它可以包含不在选择列表中的列。 例如, SELECT DEPT、MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT、 AGE。 (ODBC 2.0)
SQL_GB_NO_RELATION = GROUP BY 子句中的列和选择列表无关。 选择列表中的非分组非聚合列的含义取决于数据源。 例如, SELECT DEPT、EMPLOYEE GROUP BY DEPT、AGE。 (ODBC 2.0)

SQL-92 符合入口级别的驱动程序将始终返回受支持的SQL_GB_GROUP_BY_EQUALS_SELECT选项。 SQL-92 完全一致性驱动程序将始终返回受支持的SQL_GB_COLLATE选项。 如果未支持任何选项, 则数据源不支持 GROUP BY 子句。
SQL_IDENTIFIER_CASE 1.0 SQLUSMALLINT 值,如下所示:
SQL_IC_UPPER = SQL 中的标识符不区分大小写,并且存储在系统目录中的大写。
SQL_IC_LOWER = SQL 中的标识符不区分大小写,并且存储在系统目录中。
SQL_IC_SENSITIVE = SQL 中的标识符区分大小写,存储在系统目录中的混合大小写中。
SQL_IC_MIXED = SQL 中的标识符不区分大小写,并且存储在系统目录中的混合大小写中。

由于 SQL-92 中的标识符从不区分大小写,因此严格符合 SQL-92(任何级别)的驱动程序永远不会返回受支持的SQL_IC_SENSITIVE选项。
SQL_IDENTIFIER_QUOTE_CHAR 1.0 用作 SQL 语句中带引号(带分隔符)标识符的起始和结束分隔符的字符串。 (作为参数传递给 ODBC 函数的标识符不必带引号。如果数据源不支持带引号的标识符,则返回空白。

当连接属性SQL_ATTR_METADATA_ID设置为SQL_TRUE时,此字符串还可用于引用目录函数参数。

由于 SQL-92 中的标识符引号是双引号(),因此严格符合 SQL-92 的驱动程序将始终返回双引号字符。
SQL_INDEX_KEYWORDS 3.0 一个 SQLUINTEGER 位掩码,用于枚举驱动程序支持的 CREATE INDEX 语句中的关键字:
SQL_IK_NONE = 不支持任何关键字。
SQL_IK_ASC = ASC 关键字受支持。
SQL_IK_DESC = DESC 关键字受支持。
SQL_IK_ALL = 支持所有关键字。

若要查看 CREATE INDEX 语句是否受支持,应用程序使用SQL_DLL_INDEX信息类型调用 SQLGetInfo
SQL_INFO_SCHEMA_VIEWS 3.0 SQLUINTEGER 位掩码,用于枚举驱动程序支持的INFORMATION_SCHEMA中的视图。 INFORMATION_SCHEMA的视图和内容在 SQL-92 中定义。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定支持哪些视图:
SQL_ISV_ASSERTIONS = 标识由给定用户拥有的目录断言。 (全级别)
SQL_ISV_CHARACTER_SETS = 标识可由给定用户访问的目录字符集。 (中级)
SQL_ISV_CHECK_CONSTRAINTS = 标识给定用户拥有的 CHECK 约束。 (中级)
SQL_ISV_COLLATIONS = 标识可供给定用户访问的目录的字符排序规则。 (全级别)
SQL_ISV_COLUMN_DOMAIN_USAGE = 标识依赖于目录中定义的域且由给定用户拥有的目录的列。 (中级)
SQL_ISV_COLUMN_PRIVILEGES = 标识对可供给定用户或授予的永久性表列的权限。 (FIPS 过渡级别)
SQL_ISV_COLUMNS = 标识可由给定用户访问的永久性表的列。 (FIPS 过渡级别)
SQL_ISV_CONSTRAINT_COLUMN_USAGE = 类似于CONSTRAINT_TABLE_USAGE视图,为给定用户拥有的各种约束标识列。 (中级)
SQL_ISV_CONSTRAINT_TABLE_USAGE = 标识约束(引用、唯一和断言)使用的表,并且由给定用户拥有。 (中级)
SQL_ISV_DOMAIN_CONSTRAINTS = 标识可由给定用户访问的域约束(目录中的域)。 (中级)
SQL_ISV_DOMAINS = 标识用户可以访问的目录中定义的域。 (中级)
SQL_ISV_KEY_COLUMN_USAGE = 标识目录中定义的列,这些列被给定用户约束为键。 (中级)
SQL_ISV_REFERENTIAL_CONSTRAINTS = 标识给定用户拥有的引用约束。 (中级)
SQL_ISV_SCHEMATA = 标识给定用户拥有的架构。 (中级)
SQL_ISV_SQL_LANGUAGES = 标识 SQL 实现支持的 SQL 一致性级别、选项和方言。 (中级)
SQL_ISV_TABLE_CONSTRAINTS = 标识给定用户拥有的表约束。 (中级)
SQL_ISV_TABLE_PRIVILEGES = 标识对给定用户可用或授予的永久性表的权限。 (FIPS 过渡级别)
SQL_ISV_TABLES = 标识目录中定义的持久表,该表可由给定用户访问。 (FIPS 过渡级别)
SQL_ISV_TRANSLATIONS = 标识可由给定用户访问的目录的字符翻译。 (全级别)
SQL_ISV_USAGE_PRIVILEGES = 标识对可供给定用户或拥有的目录对象的 USAGE 权限。 (FIPS 过渡级别)
SQL_ISV_VIEW_COLUMN_USAGE = 标识给定用户拥有的目录视图所依赖的列。 (中级)
SQL_ISV_VIEW_TABLE_USAGE = 标识给定用户拥有的目录视图所依赖的表。 (中级)
SQL_ISV_VIEWS = 标识此目录中定义的可被给定用户访问的已查看表。 (FIPS 过渡级别)
SQL_INSERT_STATEMENT 3.0 指示对 INSERT 语句的支持的 SQLUINTEGER 位掩码:
SQL_IS_INSERT_LITERALS
SQL_IS_INSERT_SEARCHED
SQL_IS_SELECT_INTO

SQL-92 入口级别一致性驱动程序将始终按支持返回所有这些选项。
SQL_INTEGRITY 1.0 字符串:如果数据源支持完整性增强功能,则为“Y”;如果不是,则为“N”。

InfoType 已从 ODBC 2.0 InfoType SQL_ODBC_SQL_OPT_IEF重命名为 ODBC 3.0
SQL_KEYSET_CURSOR_ATTRIBUTES1 3.0 一个 SQLUINTEGER 位掩码,描述驱动程序支持的键集游标的属性。 此位掩码包含属性的第一个子集;对于第二个子集,请参阅SQL_KEYSET_CURSOR_ATTRIBUTES2。

以下位掩码用于确定支持哪些属性:
SQL_CA1_NEXT
SQL_CA1_ABSOLUTE
SQL_CA1_RELATIVE
SQL_CA1_BOOKMARK
SQL_CA1_LOCK_EXCLUSIVE
SQL_CA1_LOCK_NO_CHANGE
SQL_CA1_LOCK_UNLOCK
SQL_CA1_POS_POSITION
SQL_CA1_POS_UPDATE
SQL_CA1_POS_DELETE
SQL_CA1_POS_REFRESH
SQL_CA1_POSITIONED_UPDATE
SQL_CA1_POSITIONED_DELETE
SQL_CA1_SELECT_FOR_UPDATE
SQL_CA1_BULK_ADD
SQL_CA1_BULK_UPDATE_BY_BOOKMARK
SQL_CA1_BULK_DELETE_BY_BOOKMARK
SQL_CA1_BULK_FETCH_BY_BOOKMARK

有关这些位掩码的说明,请参阅SQL_DYNAMIC_CURSOR_ATTRIBUTES1(并在说明中将“keyset 驱动的游标”替换为“动态游标”。

SQL-92 中级一致性驱动程序通常返回受支持的SQL_CA1_NEXT、SQL_CA1_ABSOLUTE和SQL_CA1_RELATIVE选项,因为驱动程序支持通过嵌入式 SQL FETCH 语句滚动游标。 由于这不直接确定基础 SQL 支持,因此,即使对于 SQL-92 中间级别一致性驱动程序,也可以支持可滚动游标。
SQL_KEYSET_CURSOR_ATTRIBUTES2 3.0 一个 SQLUINTEGER 位掩码,描述驱动程序支持的键集游标的属性。 此位掩码包含属性的第二个子集;有关第一个子集,请参阅SQL_KEYSET_CURSOR_ATTRIBUTES1。

以下位掩码用于确定支持哪些属性:
SQL_CA2_READ_ONLY_CONCURRENCY
SQL_CA2_LOCK_CONCURRENCY
SQL_CA2_OPT_ROWVER_CONCURRENCY
SQL_CA2_OPT_VALUES_CONCURRENCY
SQL_CA2_SENSITIVITY_ADDITIONS
SQL_CA2_SENSITIVITY_DELETIONS
SQL_CA2_SENSITIVITY_UPDATES
SQL_CA2_MAX_ROWS_SELECT
SQL_CA2_MAX_ROWS_INSERT
SQL_CA2_MAX_ROWS_DELETE
SQL_CA2_MAX_ROWS_UPDATE
SQL_CA2_MAX_ROWS_CATALOG
SQL_CA2_MAX_ROWS_AFFECTS_ALL
SQL_CA2_CRC_EXACT
SQL_CA2_CRC_APPROXIMATE
SQL_CA2_SIMULATE_NON_UNIQUE
SQL_CA2_SIMULATE_TRY_UNIQUE
SQL_CA2_SIMULATE_UNIQUE

有关这些位掩码的说明,请参阅SQL_DYNAMIC_CURSOR_ATTRIBUTES1(并在说明中将“keyset 驱动的游标”替换为“动态游标”。
SQL_KEYWORDS 2.0 包含所有数据源特定关键字的逗号分隔列表的字符串。 此列表不包含特定于 ODBC 的关键字或数据源和 ODBC 使用的关键字。 此列表表示所有保留关键字;可互操作的应用程序不应在对象名称中使用这些单词。

有关 ODBC 关键字的列表,请参阅附录 C: SQL 语法中的保留关键字。 #define 值SQL_ODBC_KEYWORDS包含以逗号分隔的 ODBC 关键字列表。
SQL_LIKE_ESCAPE_CLAUSE 2.0 一个字符串:“Y”如果数据源支持 LIKE 谓词中的百分比字符和下划线字符 (_),并且驱动程序支持 ODBC 语法来定义 LIKE 谓词转义字符;否则为“N”。
SQL_MAX_ASYNC_CONCURRENT_STATEMENTS 3.0 SQLUINTEGER 值,该值指定驱动程序可以在给定连接上支持的最大活动并发语句数。 如果没有特定的限制或限制未知,则此值为零。
SQL_MAX_BINARY_LITERAL_LEN 2.0 一个 SQLUINTEGER 值,该值指定 SQL 语句中二进制文本的最大长度(十六进制字符数,不包括 SQLGetTypeInfo 返回的文本前缀和后缀)。 例如,二进制文本0xFFAA长度为 4。 如果没有最大长度或长度未知,则此值设置为零。
SQL_MAX_CATALOG_NAME_LEN 1.0 一个 SQLUSMALLINT 值,该值指定数据源中目录名称的最大长度。 如果没有最大长度或长度未知,则此值设置为零。

FIPS 完全一致性驱动程序将返回至少 128 个。

InfoType 已从 ODBC 2.0 InfoType SQL_MAX_QUALIFIER_NAME_LEN重命名为 ODBC 3.0
SQL_MAX_CHAR_LITERAL_LEN 2.0 一个 SQLUINTEGER 值,该值指定 SQL 语句中字符文本的最大长度(字符数,不包括 SQLGetTypeInfo 返回的文本前缀和后缀)。 如果没有最大长度或长度未知,则此值设置为零。
SQL_MAX_COLUMN_NAME_LEN 1.0 一个 SQLUSMALLINT 值,该值指定数据源中列名的最大长度。 如果没有最大长度或长度未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序将至少返回 18 个。 FIPS 中间级别一致性驱动程序将至少返回 128。
SQL_MAX_COLUMNS_IN_GROUP_BY 2.0 一个 SQLUSMALLINT 值,该值指定 GROUP BY 子句中允许的最大列数。 如果没有指定的限制或限制未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序至少将返回 6。 符合 FIPS 中间级别的驱动程序将至少返回 15 个。
SQL_MAX_COLUMNS_IN_INDEX 2.0 一个 SQLUSMALLINT 值,该值指定索引中允许的最大列数。 如果没有指定的限制或限制未知,则此值设置为零。
SQL_MAX_COLUMNS_IN_ORDER_BY 2.0 一个 SQLUSMALLINT 值,该值指定 ORDER BY 子句中允许的最大列数。 如果没有指定的限制或限制未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序至少将返回 6。 符合 FIPS 中间级别的驱动程序将至少返回 15 个。
SQL_MAX_COLUMNS_IN_SELECT 2.0 一个 SQLUSMALLINT 值,该值指定选择列表中允许的最大列数。 如果没有指定的限制或限制未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序将至少返回 100。 符合 FIPS 中间级别的驱动程序将至少返回 250。
SQL_MAX_COLUMNS_IN_TABLE 2.0 一个 SQLUSMALLINT 值,该值指定表中允许的最大列数。 如果没有指定的限制或限制未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序将至少返回 100。 符合 FIPS 中间级别的驱动程序将至少返回 250。
SQL_MAX_CONCURRENT_ACTIVITIES 1.0 一个 SQLUSMALLINT 值,该值指定驱动程序可以支持连接的最大活动语句数。 如果语句具有挂起的结果,则将其定义为活动,术语“results”表示 SELECT 操作中的行或受 INSERTUPDATEDELETE 操作影响的行(例如行计数),或者它处于NEED_DATA状态。 此值可以反映驱动程序或数据源施加的限制。 如果没有指定的限制或限制未知,则此值设置为零。

InfoType 已从 ODBC 2.0 InfoType SQL_ACTIVE_STATEMENTS重命名为 ODBC 3.0
SQL_MAX_CURSOR_NAME_LEN 1.0 一个 SQLUSMALLINT 值,该值指定数据源中游标名称的最大长度。 如果没有最大长度或长度未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序将至少返回 18 个。 FIPS 中间级别一致性驱动程序将至少返回 128。
SQL_MAX_DRIVER_CONNECTIONS 1.0 一个 SQLUSMALLINT 值,该值指定驱动程序可支持的环境的最大活动连接数。 此值可以反映驱动程序或数据源施加的限制。 如果没有指定的限制或限制未知,则此值设置为零。

InfoType 已从 ODBC 2.0 InfoType SQL_ACTIVE_CONNECTIONS重命名为 ODBC 3.0
SQL_MAX_IDENTIFIER_LEN 3.0 一个 SQLUSMALLINT,指示数据源支持的用户定义名称的最大大小(以字符为单位)。

符合 FIPS 入口级别的驱动程序将至少返回 18 个。 FIPS 中间级别一致性驱动程序将至少返回 128。
SQL_MAX_INDEX_SIZE 2.0 一个 SQLUINTEGER 值,该值指定索引组合字段中允许的最大字节数。 如果没有指定的限制或限制未知,则此值设置为零。
SQL_MAX_PROCEDURE_NAME_LEN 1.0 一个 SQLUSMALLINT 值,该值指定数据源中过程名称的最大长度。 如果没有最大长度或长度未知,则此值设置为零。
SQL_MAX_ROW_SIZE 2.0 一个 SQLUINTEGER 值,该值指定表中单个行的最大长度。 如果没有指定的限制或限制未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序将至少返回 2,000 个。 符合 FIPS 中间级别的驱动程序将至少返回 8,000 个。
SQL_MAX_ROW_SIZE_INCLUDES_LONG 3.0 字符串:“Y”如果为SQL_MAX_ROW_SIZE信息类型返回的最大行大小包括行中的所有SQL_LONGVARCHAR和SQL_LONGVARBINARY列的长度;否则为“N”。
SQL_MAX_SCHEMA_NAME_LEN 1.0 一个 SQLUSMALLINT 值,该值指定数据源中架构名称的最大长度。 如果没有最大长度或长度未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序将至少返回 18 个。 FIPS 中间级别一致性驱动程序将至少返回 128。

InfoType 已从 ODBC 2.0 InfoType SQL_MAX_OWNER_NAME_LEN重命名为 ODBC 3.0
SQL_MAX_STATEMENT_LEN 2.0 一个 SQLUINTEGER 值,该值指定 SQL 语句的最大长度(包括空格)长度。 如果没有最大长度或长度未知,则此值设置为零。
SQL_MAX_TABLE_NAME_LEN 1.0 一个 SQLUSMALLINT 值,该值指定数据源中表名的最大长度。 如果没有最大长度或长度未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序将至少返回 18 个。 FIPS 中间级别一致性驱动程序将至少返回 128。
SQL_MAX_TABLES_IN_SELECT 2.0 一个 SQLUSMALLINT 值,该值指定 SELECT 语句的 FROM 子句中允许的最大表数。 如果没有指定的限制或限制未知,则此值设置为零。

符合 FIPS 入口级别的驱动程序将至少返回 15 个。 FIPS 中间级别一致性驱动程序将返回至少 50 个。
SQL_MAX_USER_NAME_LEN 2.0 一个 SQLUSMALLINT 值,该值指定数据源中用户名的最大长度。 如果没有最大长度或长度未知,则此值设置为零。
SQL_MULT_RESULT_SETS 1.0 一个字符串:如果数据源支持多个结果集,则为“Y”;如果没有,则为“N”。

有关多个结果集的详细信息,请参阅 “多个结果”。
SQL_MULTIPLE_ACTIVE_TXN 1.0 一个字符串:如果驱动程序同时支持多个活动事务,则为“Y”;如果在任何时候只能有一个事务处于活动状态,则为“N”。

对于分布式事务,为此信息类型返回的信息不适用。
SQL_NEED_LONG_DATA_LEN 2.0 一个字符串:“Y”,如果数据源需要长数据值的长度(数据类型是SQL_LONGVARCHAR、SQL_LONGVARBINARY或特定于长数据源的数据类型),则该值在发送到数据源之前为“N”。 有关详细信息,请参阅 SQLBindParameter 函数SQLSetPos 函数
SQL_NON_NULLABLE_COLUMNS 1.0 一个 SQLUSMALLINT 值,该值指定数据源是否支持列中的 NOT NULL:
SQL_NNC_NULL = 所有列都必须可为 null。
SQL_NNC_NON_NULL = 列不能为 null。 (数据源支持CREATE TABLE 语句中的 NOT NULL 列约束。

SQL-92 符合入口级别的驱动程序将返回SQL_NNC_NON_NULL。
SQL_NULL_COLLATION 2.0 一个 SQLUSMALLINT 值,该值指定在结果集中对 NUL 进行排序的位置:
SQL_NC_END = NUL 在结果集的末尾排序,而不考虑 ASC 或 DESC 关键字。
SQL_NC_HIGH = NULL 在结果集的高端排序,具体取决于 ASC 或 DESC 关键字。
SQL_NC_LOW = NUL 在结果集的低端排序,具体取决于 ASC 或 DESC 关键字。
SQL_NC_START = NUL 在结果集的开头排序,而不考虑 ASC 或 DESC 关键字。
SQL_NUMERIC_FUNCTIONS 1.0 注意:ODBC 1.0 中引入了信息类型;每个位掩码都标有引入它的版本。

一个 SQLUINTEGER 位掩码,用于枚举驱动程序和关联的数据源支持的标量数值函数。

以下位掩码用于确定支持哪些数值函数:
SQL_FN_NUM_ABS (ODBC 1.0)
SQL_FN_NUM_ACOS (ODBC 1.0)
SQL_FN_NUM_ASIN (ODBC 1.0)
SQL_FN_NUM_ATAN (ODBC 1.0)
SQL_FN_NUM_ATAN2 (ODBC 1.0)
SQL_FN_NUM_CEILING (ODBC 1.0)
SQL_FN_NUM_COS (ODBC 1.0)
SQL_FN_NUM_COT (ODBC 1.0)
SQL_FN_NUM_DEGREES (ODBC 2.0)
SQL_FN_NUM_EXP (ODBC 1.0)
SQL_FN_NUM_FLOOR (ODBC 1.0)
SQL_FN_NUM_LOG (ODBC 1.0)
SQL_FN_NUM_LOG10 (ODBC 2.0)
SQL_FN_NUM_MOD (ODBC 1.0)
SQL_FN_NUM_PI (ODBC 1.0)
SQL_FN_NUM_POWER (ODBC 2.0)
SQL_FN_NUM_RADIANS (ODBC 2.0)
SQL_FN_NUM_RAND (ODBC 1.0)
SQL_FN_NUM_ROUND (ODBC 2.0)
SQL_FN_NUM_SIGN (ODBC 1.0)
SQL_FN_NUM_SIN (ODBC 1.0)
SQL_FN_NUM_SQRT (ODBC 1.0)
SQL_FN_NUM_TAN (ODBC 1.0)
SQL_FN_NUM_TRUNCATE (ODBC 2.0)
SQL_ODBC_INTERFACE_CONFORMANCE 3.0 一个 SQLUINTEGER 值,指示驱动程序符合的 ODBC 3*.x* 接口的级别。

SQL_OIC_CORE:所有 ODBC 驱动程序应符合的最低级别。 此级别包括基本的接口元素,例如连接函数、用于准备和执行 SQL 语句的函数、基本结果集元数据函数、基本目录函数等。
SQL_OIC_LEVEL1:包括核心标准符合性级别功能以及可滚动游标、书签、定位更新和删除等级别。
SQL_OIC_LEVEL2:级别包括 1 级标准符合性级别功能,以及敏感游标等高级功能;按书签更新、删除和刷新;存储过程支持;主键和外键的目录函数;多目录支持;等等。

有关详细信息,请参阅 接口一致性级别
SQL_ODBC_VER 1.0 一个字符串,其中包含驱动程序管理器所遵循的 ODBC 版本。 版本采用 ##.#.0000 格式,其中前两位是主版本,接下来的两位数是次要版本。 这仅在驱动程序管理器中实现。
SQL_OJ_CAPABILITIES 2.01 一个 SQLUINTEGER 位掩码,用于枚举驱动程序和数据源支持的外部联接的类型。 以下位掩码用于确定支持的类型:
SQL_OJ_LEFT = 支持左外部联接。
SQL_OJ_RIGHT = 支持右外部联接。
SQL_OJ_FULL = 支持完全外部联接。
SQL_OJ_NESTED = 支持嵌套外部联接。
SQL_OJ_NOT_ORDERED = 外部联接的 ON 子句中的列名不必与 OUTER JOIN 子句中各自的表名相同。
SQL_OJ_INNER = 内部表(左外部联接中的右表或右外部联接中的左表)也可以在内部联接中使用。 这不适用于没有内部表的完整外部联接。
SQL_OJ_ALL_COMPARISON_OPS = ON 子句中的比较运算符可以是任何 ODBC 比较运算符。 如果未设置此位,则只能在外部联接中使用相等 (=) 比较运算符。

如果不支持这些选项,则不支持外部联接子句。

有关 SELECT 语句中关系联接运算符支持的信息(由 SQL-92 定义),请参阅SQL_SQL92_RELATIONAL_JOIN_OPERATORS。
SQL_ORDER_BY_COLUMNS_IN_SELECT 2.0 字符串:“Y”如果 ORDER BY 子句中的列必须位于选择列表中,则为“Y”;否则为“N”。
SQL_PARAM_ARRAY_ROW_COUNTS 3.0 一个 SQLUINTEGER,用于枚举驱动程序的属性,这些属性涉及参数化执行中行计数的可用性。 具有以下值:
SQL_PARC_BATCH = 各个行计数可用于每个参数集。 这在概念上等效于生成一批 SQL 语句的驱动程序,一个用于数组中的每个参数集。 可以使用SQL_PARAM_STATUS_PTR描述符字段检索扩展错误信息。
SQL_PARC_NO_BATCH = 只有一个行计数可用,这是整个参数数组执行语句产生的累积行计数。 这在概念上等效于将语句与完整的参数数组一起视为一个原子单元。 错误处理方式与执行一条语句时相同。
SQL_PARAM_ARRAY_SELECTS 3.0 一个 SQLUINTEGER,用于枚举驱动程序的属性,该属性涉及参数化执行中结果集的可用性。 具有以下值:
SQL_PAS_BATCH = 每个参数集有一个结果集可用。 这在概念上等效于生成一批 SQL 语句的驱动程序,一个用于数组中的每个参数集。
SQL_PAS_NO_BATCH = 只有一个结果集可用,它表示由为完整参数数组执行语句生成的累积结果集。 这在概念上等效于将语句与完整的参数数组一起视为一个原子单元。
SQL_PAS_NO_SELECT = 驱动程序不允许使用参数数组执行结果集生成语句。
SQL_POS_OPERATIONS 2.0 一个 SQLINTEGER 位掩码,枚举 SQLSetPos 中的支持操作。

以下位掩码与标志一起使用,以确定支持哪些选项。
SQL_POS_POSITION (ODBC 2.0)
SQL_POS_REFRESH (ODBC 2.0)
SQL_POS_UPDATE (ODBC 2.0)
SQL_POS_DELETE (ODBC 2.0)
SQL_POS_ADD (ODBC 2.0)
SQL_PROCEDURE_TERM 1.0 包含过程数据源供应商名称的字符串;例如,“database procedure”、“stored procedure”、“procedure”、“package”或“stored query”。
SQL_PROCEDURES 1.0 字符串:如果数据源支持过程,并且驱动程序支持 ODBC 过程调用语法,则为“Y”;否则为“N”。
SQL_QUOTED_IDENTIFIER_CASE 2.0 SQLUSMALLINT 值,如下所示:
SQL_IC_UPPER = SQL 中带引号的标识符不区分大小写,并且存储在系统目录中。
SQL_IC_LOWER = SQL 中带引号的标识符不区分大小写,并且存储在系统目录中。
SQL_IC_SENSITIVE = SQL 中带引号的标识符区分大小写,存储在系统目录中的混合大小写中。 (在符合 SQL-92 标准的数据库中,带引号的标识符始终区分大小写。
SQL_IC_MIXED = SQL 中带引号的标识符不区分大小写,并且存储在系统目录中的混合大小写中。

SQL-92 入口级别一致性驱动程序将始终返回SQL_IC_SENSITIVE。
SQL_ROW_UPDATES 1.0 字符串:“Y”如果键集驱动或混合游标维护所有提取行的行版本或值,因此可以检测自上次提取行以来由任何用户对行所做的任何更新。 (这仅适用于更新,不适用于删除或插入。调用 SQLFetchScroll,驱动程序可以将SQL_ROW_UPDATED标志返回到行状态数组。 否则为“N”。
SQL_SCHEMA_TERM 1.0 包含架构数据源供应商名称的字符串;例如,“owner”、“Authorization ID”或“Schema”。

字符串可以在大写、小写或混合大小写中返回。

SQL-92 符合入口级别的驱动程序将始终返回“schema”。

InfoType 已从 ODBC 2.0 InfoType SQL_OWNER_TERM重命名为 ODBC 3.0
SQL_SCHEMA_USAGE 2.0 一个 SQLUINTEGER 位掩码,用于枚举可以使用架构的语句:
SQL_SU_DML_STATEMENTS = 所有数据操作语言语句都支持架构: SELECTINSERTUPDATEDELETE;如果受支持, 则 SELECT FOR UPDATE 和定位更新和删除语句。
SQL_SU_PROCEDURE_INVOCATION = ODBC 过程调用语句支持架构。
SQL_SU_TABLE_DEFINITION = 所有表定义语句都支持架构:CREATE TABLECREATE VIEWALTER TABLE、DROP TABLEDROP VIEW
SQL_SU_INDEX_DEFINITION = 所有索引定义语句都支持架构: CREATE INDEXDROP INDEX
SQL_SU_PRIVILEGE_DEFINITION = 所有特权定义语句都支持架构: GRANTREVOKE

SQL-92 符合入口级别的驱动程序将始终返回受支持的SQL_SU_DML_STATEMENTS、SQL_SU_TABLE_DEFINITION和SQL_SU_PRIVILEGE_DEFINITION选项。

InfoType 已从 ODBC 2.0 InfoType SQL_OWNER_USAGE重命名为 ODBC 3.0
SQL_SCROLL_OPTIONS 1.0 注意:ODBC 1.0 中引入了信息类型;每个位掩码都标有引入它的版本。

一个 SQLUINTEGER 位掩码,枚举可滚动游标支持的滚动选项。

以下位掩码用于确定支持的选项:
SQL_SO_FORWARD_ONLY = 光标仅向前滚动。 (ODBC 1.0)
SQL_SO_STATIC = 结果集中的数据是静态的。 (ODBC 2.0)
SQL_SO_KEYSET_DRIVEN = 驱动程序保存并使用结果集中每一行的键。 (ODBC 1.0)
SQL_SO_DYNAMIC = 驱动程序保留行集中每一行的键(键集大小与行集大小相同)。 (ODBC 1.0)
SQL_SO_MIXED = 驱动程序保留键集中每一行的键,并且键集大小大于行集大小。 游标是由键集驱动的键集,在键集外部是动态的。 (ODBC 1.0)

有关可滚动游标的信息,请参阅 可滚动游标
SQL_SEARCH_PATTERN_ESCAPE 1.0 一个字符串,指定驱动程序支持的转义字符,该字符允许在搜索模式中使用模式匹配元字符下划线 (_) 和百分号 • 作为有效字符。 此转义字符仅适用于支持搜索字符串的目录函数参数。 如果此字符串为空,驱动程序不支持搜索模式转义字符。

由于此信息类型不指示对 LIKE 谓词中转义字符的一般支持,因此 SQL-92 不包括此字符串的要求。

InfoType 仅限于目录函数。 有关在搜索模式字符串中使用转义字符的说明,请参阅 模式值参数
SQL_SERVER_NAME 1.0 具有实际数据源特定服务器名称的字符串;在 SQLConnect、SQLDriverConnectSQLBrowseConnect 期间使用数据源名称时非常有用。
SQL_SPECIAL_CHARACTERS 2.0 一个字符串,其中包含所有特殊字符(即,除通过 z、A 到 Z、0 到 9 和下划线)的所有字符(可用于数据源的标识符名称(如表名、列名或索引名称)中。 例如,“#$^”。 如果标识符包含其中一个或多个字符,则标识符必须是带分隔符的标识符。
SQL_SQL_CONFORMANCE 3.0 一个 SQLUINTEGER 值,指示驱动程序支持的 SQL-92 级别:
SQL_SC_SQL92_ENTRY = 符合入门级别的 SQL-92。
SQL_SC_FIPS127_2_TRANSITIONAL = 符合 FIPS 127-2 过渡级别。
SQL_SC_SQL92_FULL = 符合完全级别的 SQL-92。
SQL_SC_ SQL92_INTERMEDIATE = 中级 SQL-92 兼容。
SQL_SQL92_DATETIME_FUNCTIONS 3.0 SQLUINTEGER 位掩码,枚举驱动程序支持的日期/时间标量函数以及 SQL-92 中定义的关联数据源。

以下位掩码用于确定支持哪些日期/时间函数:
SQL_SDF_CURRENT_DATE
SQL_SDF_CURRENT_TIME
SQL_SDF_CURRENT_TIMESTAMP
SQL_SQL92_FOREIGN_KEY_DELETE_RULE 3.0 SQLUINTEGER 位掩码,枚举 DELETE 语句中外键支持的规则,如 SQL-92 中定义。

以下位掩码用于确定数据源支持哪些子句:
SQL_SFKD_CASCADE
SQL_SFKD_NO_ACTION
SQL_SFKD_SET_DEFAULT
SQL_SFKD_SET_NULL

FIPS 过渡级别一致性驱动程序将始终按支持返回所有这些选项。
SQL_SQL92_FOREIGN_KEY_UPDATE_RULE 3.0 SQLUINTEGER 位掩码,枚举 UPDATE 语句中外键支持的规则,如 SQL-92 中定义。

以下位掩码用于确定数据源支持哪些子句:
SQL_SFKU_CASCADE
SQL_SFKU_NO_ACTION
SQL_SFKU_SET_DEFAULT
SQL_SFKU_SET_NULL

SQL-92 完全一致性驱动程序将始终按支持返回所有这些选项。
SQL_SQL92_GRANT 3.0 SQLUINTEGER 位掩码,枚举 GRANT 语句中支持的子句,如 SQL-92 中定义。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定数据源支持哪些子句:
SQL_SG_DELETE_TABLE(入门级别)
SQL_SG_INSERT_COLUMN (中级)
SQL_SG_INSERT_TABLE(入门级别)
SQL_SG_REFERENCES_TABLE(入门级别)
SQL_SG_REFERENCES_COLUMN(入门级别)
SQL_SG_SELECT_TABLE(入门级别)
SQL_SG_UPDATE_COLUMN(入门级别)
SQL_SG_UPDATE_TABLE (入门级别)
SQL_SG_USAGE_ON_DOMAIN(FIPS 过渡级别)
SQL_SG_USAGE_ON_CHARACTER_SET (FIPS 过渡级别)
SQL_SG_USAGE_ON_COLLATION(FIPS 过渡级别)
SQL_SG_USAGE_ON_TRANSLATION(FIPS 过渡级别)
SQL_SG_WITH_GRANT_OPTION(入门级别)
SQL_SQL92_NUMERIC_VALUE_FUNCTIONS 3.0 SQLUINTEGER 位掩码,枚举驱动程序和关联数据源支持的数值标量函数,如 SQL-92 中定义。

以下位掩码用于确定支持哪些数值函数:
SQL_SNVF_BIT_LENGTH
SQL_SNVF_CHAR_LENGTH
SQL_SNVF_CHARACTER_LENGTH
SQL_SNVF_EXTRACT
SQL_SNVF_OCTET_LENGTH
SQL_SNVF_POSITION
SQL_SQL92_PREDICATES 3.0 一个 SQLUINTEGER 位掩码,用于枚举 SELECT 语句中支持的谓词,如 SQL-92 中定义。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定数据源支持的选项:
SQL_SP_BETWEEN (入门级别)
SQL_SP_COMPARISON (入门级别)
SQL_SP_EXISTS(入门级别)
SQL_SP_IN (入门级别)
SQL_SP_ISNOTNULL(入门级别)
SQL_SP_ISNULL(入门级别)
SQL_SP_LIKE (入门级别)
SQL_SP_MATCH_FULL (全级别)
SQL_SP_MATCH_PARTIAL(全级别)
SQL_SP_MATCH_UNIQUE_FULL (全级别)
SQL_SP_MATCH_UNIQUE_PARTIAL (完全级别)
SQL_SP_OVERLAPS (FIPS 过渡级别)
SQL_SP_QUANTIFIED_COMPARISON (入门级别)
SQL_SP_UNIQUE (入门级别)
SQL_SQL92_RELATIONAL_JOIN_OPERATORS 3.0 SQLUINTEGER 位掩码,枚举 SELECT 语句中支持的关系联接运算符,如 SQL-92 中定义。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定数据源支持的选项:
SQL_SRJO_CORRESPONDING_CLAUSE(中间级别)
SQL_SRJO_CROSS_JOIN (全级别)
SQL_SRJO_EXCEPT_JOIN (中间级别)
SQL_SRJO_FULL_OUTER_JOIN(中间级别)
SQL_SRJO_INNER_JOIN (FIPS 过渡级别)
SQL_SRJO_INTERSECT_JOIN (中级)
SQL_SRJO_LEFT_OUTER_JOIN (FIPS 过渡级别)
SQL_SRJO_NATURAL_JOIN (FIPS 过渡级别)
SQL_SRJO_RIGHT_OUTER_JOIN (FIPS 过渡级别)
SQL_SRJO_UNION_JOIN (全级别)

SQL_SRJO_INNER_JOIN指示对 INNER JOIN 语法的支持,而不是对内部联接功能的支持。 对 INNER JOIN 语法的支持是 FIPS 过渡,而对内部联接功能的支持是 ENTRY
SQL_SQL92_REVOKE 3.0 一个 SQLUINTEGER 位掩码,用于枚举 REVOKE 语句中支持的子句(在数据源支持的 SQL-92 中定义)。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定数据源支持哪些子句:
SQL_SR_CASCADE (FIPS 过渡级别)
SQL_SR_DELETE_TABLE (入门级别)
SQL_SR_GRANT_OPTION_FOR (中级)
SQL_SR_INSERT_COLUMN (中级)
SQL_SR_INSERT_TABLE (入门级别)
SQL_SR_REFERENCES_COLUMN (入门级别)
SQL_SR_REFERENCES_TABLE (入门级别)
SQL_SR_RESTRICT (FIPS 过渡级别)
SQL_SR_SELECT_TABLE(入门级别)
SQL_SR_UPDATE_COLUMN (入门级别)
SQL_SR_UPDATE_TABLE (入门级别)
SQL_SR_USAGE_ON_DOMAIN (FIPS 过渡级别)
SQL_SR_USAGE_ON_CHARACTER_SET (FIPS 过渡级别)
SQL_SR_USAGE_ON_COLLATION(FIPS 过渡级别)
SQL_SR_USAGE_ON_TRANSLATION(FIPS 过渡级别)
SQL_SQL92_ROW_VALUE_CONSTRUCTOR 3.0 SQLUINTEGER 位掩码,枚举 SELECT 语句中支持的行值构造函数表达式,如 SQL-92 中定义。 以下位掩码用于确定数据源支持的选项:
SQL_SRVC_VALUE_EXPRESSION
SQL_SRVC_NULL
SQL_SRVC_DEFAULT
SQL_SRVC_ROW_SUBQUERY
SQL_SQL92_STRING_FUNCTIONS 3.0 SQLUINTEGER 位掩码,枚举驱动程序和关联的数据源支持的字符串标量函数,如 SQL-92 中定义。

以下位掩码用于确定支持哪些字符串函数:
SQL_SSF_CONVERT
SQL_SSF_LOWERSQL_SSF_UPPER
SQL_SSF_SUBSTRING
SQL_SSF_TRANSLATE
SQL_SSF_TRIM_BOTH
SQL_SSF_TRIM_LEADING
SQL_SSF_TRIM_TRAILING
SQL_SQL92_VALUE_EXPRESSIONS 3.0 SQLUINTEGER 位掩码,枚举 SQL-92 中定义的值表达式。

必须支持此功能的 SQL-92 或 FIPS 一致性级别显示在每个位掩码旁边的括号中。

以下位掩码用于确定数据源支持的选项:
SQL_SVE_CASE(中间级别)
SQL_SVE_CAST (FIPS 过渡级别)
SQL_SVE_COALESCE(中间级别)
SQL_SVE_NULLIF (中间级别)
SQL_STANDARD_CLI_CONFORMANCE 3.0 SQLUINTEGER 位掩码,枚举驱动程序符合的 CLI 标准或标准。 以下位掩码用于确定驱动程序符合的级别:
SQL_SCC_XOPEN_CLI_VERSION1:驱动程序符合开放组 CLI 版本 1。
SQL_SCC_ISO92_CLI:驱动程序符合 ISO 92 CLI。
SQL_STATIC_CURSOR_ATTRIBUTES1 3.0 一个 SQLUINTEGER 位掩码,描述驱动程序支持的静态游标的属性。 此位掩码包含属性的第一个子集;对于第二个子集,请参阅SQL_STATIC_CURSOR_ATTRIBUTES2。

以下位掩码用于确定支持哪些属性:
SQL_CA1_NEXT
SQL_CA1_ABSOLUTE
SQL_CA1_RELATIVE
SQL_CA1_BOOKMARK
SQL_CA1_LOCK_NO_CHANGE
SQL_CA1_LOCK_EXCLUSIVE
SQL_CA1_LOCK_UNLOCK
SQL_CA1_POS_POSITION
SQL_CA1_POS_UPDATE
SQL_CA1_POS_DELETE
SQL_CA1_POS_REFRESH
SQL_CA1_POSITIONED_UPDATE
SQL_CA1_POSITIONED_DELETE
SQL_CA1_SELECT_FOR_UPDATE
SQL_CA1_BULK_ADD
SQL_CA1_BULK_UPDATE_BY_BOOKMARK
SQL_CA1_BULK_DELETE_BY_BOOKMARK
SQL_CA1_BULK_FETCH_BY_BOOKMARK

有关这些位掩码的说明,请参阅SQL_DYNAMIC_CURSOR_ATTRIBUTES1(并在说明中将“静态游标”替换为“动态游标”。

SQL-92 中级一致性驱动程序通常返回受支持的SQL_CA1_NEXT、SQL_CA1_ABSOLUTE和SQL_CA1_RELATIVE选项,因为驱动程序支持通过嵌入式 SQL FETCH 语句滚动游标。 由于这不直接确定基础 SQL 支持,因此,即使对于 SQL-92 中间级别一致性驱动程序,也可以支持可滚动游标。
SQL_STATIC_CURSOR_ATTRIBUTES2 3.0 一个 SQLUINTEGER 位掩码,描述驱动程序支持的静态游标的属性。 此位掩码包含属性的第二个子集;有关第一个子集,请参阅SQL_STATIC_CURSOR_ATTRIBUTES1。

以下位掩码用于确定支持哪些属性:
SQL_CA2_READ_ONLY_CONCURRENCY
SQL_CA2_LOCK_CONCURRENCY
SQL_CA2_OPT_ROWVER_CONCURRENCY
SQL_CA2_OPT_VALUES_CONCURRENCY
SQL_CA2_SENSITIVITY_ADDITIONS
SQL_CA2_SENSITIVITY_DELETIONS
SQL_CA2_SENSITIVITY_UPDATES
SQL_CA2_MAX_ROWS_SELECT
SQL_CA2_MAX_ROWS_INSERT
SQL_CA2_MAX_ROWS_DELETE
SQL_CA2_MAX_ROWS_UPDATE
SQL_CA2_MAX_ROWS_CATALOG
SQL_CA2_MAX_ROWS_AFFECTS_ALL
SQL_CA2_CRC_EXACT
SQL_CA2_CRC_APPROXIMATE
SQL_CA2_SIMULATE_NON_UNIQUE
SQL_CA2_SIMULATE_TRY_UNIQUE
SQL_CA2_SIMULATE_UNIQUE

有关这些位掩码的说明,请参阅SQL_DYNAMIC_CURSOR_ATTRIBUTES2(并在说明中将“静态游标”替换为“动态游标”。
SQL_STRING_FUNCTIONS 1.0 注意:ODBC 1.0 中引入了信息类型;每个位掩码都标有引入它的版本。

一个 SQLUINTEGER 位掩码,用于枚举驱动程序和关联的数据源支持的标量字符串函数。

以下位掩码用于确定支持哪些字符串函数:
SQL_FN_STR_ASCII (ODBC 1.0)
SQL_FN_STR_BIT_LENGTH (ODBC 3.0)
SQL_FN_STR_CHAR (ODBC 1.0)
SQL_FN_STR_CHAR_LENGTH (ODBC 3.0)
SQL_FN_STR_CHARACTER_LENGTH (ODBC 3.0)
SQL_FN_STR_CONCAT (ODBC 1.0)
SQL_FN_STR_DIFFERENCE (ODBC 2.0)
SQL_FN_STR_INSERT (ODBC 1.0)
SQL_FN_STR_LCASE (ODBC 1.0)
SQL_FN_STR_LEFT (ODBC 1.0)
SQL_FN_STR_LENGTH (ODBC 1.0)
SQL_FN_STR_LOCATE (ODBC 1.0)
SQL_FN_STR_LTRIM (ODBC 1.0)
SQL_FN_STR_OCTET_LENGTH (ODBC 3.0)
SQL_FN_STR_POSITION (ODBC 3.0)
SQL_FN_STR_REPEAT (ODBC 1.0)
SQL_FN_STR_REPLACE (ODBC 1.0)
SQL_FN_STR_RIGHT (ODBC 1.0)
SQL_FN_STR_RTRIM (ODBC 1.0)
SQL_FN_STR_SOUNDEX (ODBC 2.0)
SQL_FN_STR_SPACE (ODBC 2.0)
SQL_FN_STR_SUBSTRING (ODBC 1.0)
SQL_FN_STR_UCASE (ODBC 1.0)

如果应用程序可以使用 string_exp1string_exp2start 参数调用 LOCATE 标量函数,驱动程序将返回SQL_FN_STR_LOCATE位掩码。 如果应用程序只能调用具有 string_exp1string_exp2 参数的 LOCATE 标量函数,驱动程序将返回SQL_FN_STR_LOCATE_2位掩码。 完全支持 LOCATE 标量函数的驱动程序将返回这两个位掩码。

(有关详细信息,请参阅 附录 E 中的字符串函数 ,“标量函数”。)
SQL_SUBQUERIES 2.0 一个 SQLUINTEGER 位掩码,用于枚举支持子查询的谓词:
SQL_SQ_CORRELATED_SUBQUERIES
SQL_SQ_COMPARISON
SQL_SQ_EXISTS
SQL_SQ_INSQL_SQ_QUANTIFIED

SQL_SQ_CORRELATED_SUBQUERIES位掩码指示支持子查询的所有谓词都支持关联的子查询。

SQL-92 入口级别一致性驱动程序将始终返回在其中设置所有这些位的位掩码。
SQL_SYSTEM_FUNCTIONS 1.0 一个 SQLUINTEGER 位掩码,用于枚举驱动程序和关联的数据源支持的标量系统函数。

以下位掩码用于确定支持哪些系统函数:
SQL_FN_SYS_DBNAME
SQL_FN_SYS_IFNULL
SQL_FN_SYS_USERNAME
SQL_TABLE_TERM 1.0 包含表的数据源供应商名称的字符串;例如,“table”或“file”。

此字符串可以位于大写、小写或混合大小写中。

SQL-92 符合入口级别的驱动程序将始终返回“table”。
SQL_TIMEDATE_ADD_INTERVALS 2.0 一个 SQLUINTEGER 位掩码,用于枚举驱动程序支持的时间戳间隔以及 TIMESTAMPADD 标量函数的关联数据源。

以下位掩码用于确定支持哪些间隔:
SQL_FN_TSI_FRAC_SECOND
SQL_FN_TSI_SECOND
SQL_FN_TSI_MINUTE
SQL_FN_TSI_HOUR
SQL_FN_TSI_DAY
SQL_FN_TSI_WEEK
SQL_FN_TSI_MONTH
SQL_FN_TSI_QUARTER
SQL_FN_TSI_YEAR

FIPS 过渡级别一致性驱动程序将始终返回在其中设置所有这些位的位掩码。
SQL_TIMEDATE_DIFF_INTERVALS 2.0 SQLUINTEGER 位掩码,枚举驱动程序支持的时间戳间隔以及 TIMESTAMPDIFF 标量函数的关联数据源。

以下位掩码用于确定支持哪些间隔:
SQL_FN_TSI_FRAC_SECOND
SQL_FN_TSI_SECOND
SQL_FN_TSI_MINUTE
SQL_FN_TSI_HOUR
SQL_FN_TSI_DAY
SQL_FN_TSI_WEEK
SQL_FN_TSI_MONTH
SQL_FN_TSI_QUARTER
SQL_FN_TSI_YEAR

FIPS 过渡级别一致性驱动程序将始终返回在其中设置所有这些位的位掩码。
SQL_TIMEDATE_FUNCTIONS 1.0 注意:ODBC 1.0 中引入了信息类型;每个位掩码都标有引入它的版本。

SQLUINTEGER 位掩码,枚举驱动程序和关联的数据源支持的标量日期和时间函数。

以下位掩码用于确定支持的日期和时间函数:
SQL_FN_TD_CURRENT_DATE (ODBC 3.0)
SQL_FN_TD_CURRENT_TIME (ODBC 3.0)
SQL_FN_TD_CURRENT_TIMESTAMP (ODBC 3.0)
SQL_FN_TD_CURDATE (ODBC 1.0)
SQL_FN_TD_CURTIME (ODBC 1.0)
SQL_FN_TD_DAYNAME (ODBC 2.0)
SQL_FN_TD_DAYOFMONTH (ODBC 1.0)
SQL_FN_TD_DAYOFWEEK (ODBC 1.0)
SQL_FN_TD_DAYOFYEAR (ODBC 1.0)
SQL_FN_TD_EXTRACT (ODBC 3.0)
SQL_FN_TD_HOUR (ODBC 1.0)
SQL_FN_TD_MINUTE (ODBC 1.0)
SQL_FN_TD_MONTH (ODBC 1.0)
SQL_FN_TD_MONTHNAME (ODBC 2.0)
SQL_FN_TD_NOW (ODBC 1.0)
SQL_FN_TD_QUARTER (ODBC 1.0)
SQL_FN_TD_SECOND (ODBC 1.0)
SQL_FN_TD_TIMESTAMPADD (ODBC 2.0)
SQL_FN_TD_TIMESTAMPDIFF (ODBC 2.0)
SQL_FN_TD_WEEK (ODBC 1.0)
SQL_FN_TD_YEAR (ODBC 1.0)
SQL_TXN_CAPABLE 1.0 注意:ODBC 1.0 中引入了信息类型;每个返回值都标有引入它的版本。

描述驱动程序或数据源中的事务支持的 SQLUSMALLINT 值:
SQL_TC_NONE = 不支持事务。 (ODBC 1.0)
SQL_TC_DML = 事务只能包含数据操作语言(DML)语句(SELECT、INSERTUPDATEDELETE)。 事务中遇到的数据定义语言 (DDL) 语句会导致错误。 (ODBC 1.0)
SQL_TC_DDL_COMMIT = 事务只能包含 DML 语句。 在事务中遇到 DDL 语句(CREATE TABLEDROP INDEX 等)会导致提交事务。 (ODBC 2.0)
SQL_TC_DDL_IGNORE = 事务只能包含 DML 语句。 将忽略事务中遇到的 DDL 语句。 (ODBC 2.0)
SQL_TC_ALL = 事务可以按任意顺序包含 DDL 语句和 DML 语句。 (ODBC 1.0)

(由于 SQL-92 中强制支持事务,因此 SQL-92 一致性驱动程序[任何级别]永远不会返回SQL_TC_NONE。
SQL_TXN_ISOLATION_OPTION 1.0 一个 SQLUINTEGER 位掩码,用于枚举驱动程序或数据源提供的事务隔离级别。

以下位掩码与标志一起使用以确定支持的选项:
SQL_TXN_READ_UNCOMMITTED
SQL_TXN_READ_COMMITTED
SQL_TXN_REPEATABLE_READ
SQL_TXN_SERIALIZABLE

有关这些隔离级别的说明,请参阅SQL_DEFAULT_TXN_ISOLATION的说明。

若要设置事务隔离级别,应用程序调用 SQLSetConnectAttr 来设置SQL_ATTR_TXN_ISOLATION属性。 有关详细信息,请参阅 SQLSetConnectAttr 函数

SQL-92 符合入口级别的驱动程序将始终返回支持SQL_TXN_SERIALIZABLE。 FIPS 过渡级别一致性驱动程序将始终按支持返回所有这些选项。
SQL_UNION 2.0 枚举 UNION 子句支持的 SQLUINTEGER 位掩码:
SQL_U_UNION = 数据源支持 UNION 子句。
SQL_U_UNION_ALL = 数据源支持 UNION 子句中的 ALL 关键字。 (在本例中,SQLGetInfo 同时返回SQL_U_UNION和SQL_U_UNION_ALL。

SQL-92 入口级别一致性驱动程序将始终按支持返回这两个选项。
SQL_USER_NAME 1.0 具有特定数据库中使用的名称的字符串,该字符串可以不同于登录名。
SQL_XOPEN_CLI_YEAR 3.0 一个字符串,指示 Open Group 规范的发布年,ODBC 驱动程序管理器的版本完全符合该规范。

示例

SQLGetInfo 将受支持的选项列表作为 *InfoValuePtr 中的 SQLUINTEGER 位掩码返回。 每个选项的位掩码与标志一起使用,以确定该选项是否受支持。

例如,应用程序可以使用以下代码来确定与连接关联的驱动程序是否支持 SUBSTRING 标量函数。

有关使用 SQLGetInfo 的另一个示例,请参阅 SQLTables 函数

SQLUINTEGER fFuncs;  
  
SQLGetInfo(hdbc,  
           SQL_STRING_FUNCTIONS,  
           (SQLPOINTER)&fFuncs,  
           sizeof(fFuncs),  
           NULL);  
  
// SUBSTRING supported  
if (fFuncs & SQL_FN_STR_SUBSTRING)  
   ;   // do something  
  
// SUBSTRING not supported  
else  
   ;   // do something else  

返回连接属性的设置
SQLGetConnectAttr 函数

确定驱动程序是否支持函数
SQLGetFunctions 函数

返回语句属性的设置
SQLGetStmtAttr 函数

返回有关数据源数据类型的信息
SQLGetTypeInfo 函数

另请参阅

ODBC API 参考
ODBC 头文件