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 仍将返回总字节数 (不包括字符数据的 null 终止字符数,) InfoValuePtr 指向的缓冲区中返回。

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

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

对于字符数据,如果可返回的字节数大于或等于 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 为 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。 SQLGetDiagRec*MessageText 缓冲区中返回的错误消息描述了错误及其原因。
HY001 内存分配错误 驱动程序无法分配支持执行或完成函数所需的内存。
HY010 函数序列错误 (DM) SQLExecuteSQLExecDirectSQLMoreResults 已为 StatementHandle 调用并返回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 保留一系列信息类型;驱动程序开发人员必须从开放组保留自己的特定于驱动程序的值。 SQLGetInfo 不执行 Unicode 转换或 (请参阅驱动程序定义的 InfoTypesODBC 程序员参考) 的附录 A: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 返回 SQLSTATE HY096 (无效参数值) InfoType 的值,这些值位于保留供 ODBC 使用的信息类型范围内,但未由驱动程序支持的 ODBC 版本定义。 为了确定驱动程序符合的 ODBC 版本,应用程序使用SQL_DRIVER_ODBC_VER信息类型调用 SQLGetInfoSQLGetInfo 返回 SQLSTATE HYC00 (可选功能未) 为 InfoType 的值实现,这些值属于为特定于驱动程序使用而保留的信息类型范围内,但驱动程序不支持。

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 重命名的信息类型

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

旧名称 新名称
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 中已弃用的信息类型

InfoType 参数的以下值已在 ODBC 3.x 中弃用。 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 字符串:“Y”(如果用户可以执行 SQLProcedures 返回的所有过程);如果可能返回了用户无法执行的过程,则为“N”。
SQL_ACCESSIBLE_TABLES 1.0 字符串:“Y”,如果保证用户对 SQLTable 返回的所有表具有 SELECT 权限,如果可能返回了用户无法访问的表,则为“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 = <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 = <add column> 子句受支持,并具有指定列排序规则 (完全级别) (ODBC 3.0)
SQL_AT_ADD_COLUMN_DEFAULT = <add column> 子句受支持, (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_ADD_COLUMN_SINGLE = <添加列> (FIPS 过渡级别) (ODBC 3.0)
支持 SQL_AT_ADD_CONSTRAINT = <add column> 子句, (FIPS 过渡级别指定列约束) (ODBC 3.0)
SQL_AT_ADD_TABLE_CONSTRAINT = <add table constraint> 子句 (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_CONSTRAINT_NAME_DEFINITION = <约束名称定义> 用于命名列和表约束 (ODBC 3.0) (中间级别)
SQL_AT_DROP_COLUMN_CASCADE = <drop column> CASCADE (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_DROP_COLUMN_DEFAULT = <更改列><删除列默认子句> (ODBC 3.0) ()
SQL_AT_DROP_COLUMN_RESTRICT = <drop column> RESTRICT (FIPS 过渡级别) (ODBC 3.0)
SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE (ODBC 3.0)
SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = <drop column> 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 选项调用 SQLFreeStmtSQLCloseCursor 以关闭与 语句关联的游标后有效。
SQL_BP_DELETE = 删除行后,行的书签有效。
SQL_BP_DROP = 书签在应用程序调用 HandleType 为 SQL_HANDLE_STMT 的 SQLFreeHandle 以删除语句后有效。
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 = 所有数据操作语言语句都支持目录: SELECTINSERTUPDATEDELETE,如果受支持,则 SELECT FOR UPDATE 和定位更新和删除语句。
SQL_CU_PROCEDURE_INVOCATION = ODBC 过程调用语句支持目录。
SQL_CU_TABLE_DEFINITION = 所有表定义语句都支持目录: CREATE TABLECREATE VIEWALTER TABLEDROP 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 = Result 是一个或多个非 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 位掩码。 位掩码指示数据源通过 CONVERT 标量函数对 InfoType 中命名的数据支持的转换。 如果位掩码等于零,则数据源不支持从命名类型的数据进行任何转换,包括转换为同一数据类型。

例如,若要确定数据源是否支持将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 位掩码,枚举 SQL-92 中定义的 CREATE CHARACTER SET 语句中的子句,受数据源支持。

以下位掩码用于确定支持哪些子句:
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 位掩码,枚举 SQL-92 中定义的 CREATE COLLATION 语句中的子句,受数据源支持。

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

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

以下位掩码用于确定支持哪些子句:
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 位掩码,枚举 SQL-92 中定义的 CREATE TRANSLATION 语句中的子句,数据源支持。

以下位掩码用于确定支持哪些子句:
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 参数的值。 如果应用程序名为 SQLDriverConnectSQLBrowseConnect,则这是传递给驱动程序的连接字符串中 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 中,也可以通过调用具有 SQL_ATTR_CURRENT_CATALOG Attribute 参数的 SQLGetConnectAttr 来返回为此 InfoType 返回的值。
SQL_DATETIME_LITERALS 3.0 一个 SQLUINTEGER 位掩码,枚举数据源支持的 SQL-92 日期时间文本。 请注意,这些是 SQL-92 规范中列出的 datetime 文本,与 ODBC 定义的 datetime 文本转义子句是分开的。 有关 ODBC datetime 文本转义子句的详细信息,请参阅 Date、Time 和 Timestamp Literals

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

以下位掩码用于确定支持哪些文本:
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 由参数 InfoType 确定的 SQLULEN 值,即驱动程序的环境句柄或连接句柄。

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

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

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

此信息类型由驱动程序管理器单独实现。
SQL_DRIVER_HSTMT 1.0 一个 SQLULEN 值,驱动程序的语句句柄由驱动程序管理器语句句柄确定,必须在来自应用程序的 InfoValuePtr 中的输入时传递该句柄。 在本例中, InfoValuePtr 既是输入和输出参数。 传入 InfoValuePtr 的输入语句句柄必须在参数 ConnectionHandle 上分配。

应用程序应在使用此信息类型调用 SQLGetInfo 之前创建驱动程序管理器的语句句柄的副本,以确保句柄不会在输出中被覆盖。

此信息类型由驱动程序管理器单独实现。
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 位掩码,枚举 SQL-92 中定义的 DROP ASSERTION 语句中的子句,受数据源支持。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以下位掩码用于确定支持哪些子句:
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 = 当游标为动态游标时,对 SQLFetchScroll 的调用支持SQL_FETCH_FIRST、SQL_FETCH_LAST和SQL_FETCH_ABSOLUTE的 FetchOrientation 参数。 (将提取的行集与当前游标位置无关。)
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 的 Operation 参数。
SQL_CA1_POS_UPDATE = 当游标为动态游标时,对 SQLSetPos 的调用支持 SQL_UPDATE 的 Operation 参数。
SQL_CA1_POS_DELETE = 当游标为动态游标时,对 SQLSetPos 的调用支持 SQL_DELETE 的 Operation 参数。
SQL_CA1_POS_REFRESH = 当游标为动态游标时,对 SQLSetPos 的调用支持 SQL_REFRESH 的 Operation 参数。
SQL_CA1_POSITIONED_UPDATE = 当游标为动态游标时,支持 CURRENT OF SQL 语句的 UPDATE。 (SQL-92 符合入口级别的驱动程序将始终返回此选项作为 supported。)
SQL_CA1_POSITIONED_DELETE = 当游标为动态游标时,支持 DELETE WHERE CURRENT OF SQL 语句。 (SQL-92 符合入口级别的驱动程序将始终返回此选项作为 supported。)
SQL_CA1_SELECT_FOR_UPDATE = 当游标为动态游标时,支持 SELECT FOR UPDATE SQL 语句。 (SQL-92 符合入口级别的驱动程序将始终返回此选项作为 supported。)
SQL_CA1_BULK_ADD = 当游标为动态游标时,对 SQLBulkOperations 的调用支持 SQL_ADD 的 Operation 参数。
SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 当游标为动态游标时,对 SQLBulkOperations 的调用支持 SQL_UPDATE_BY_BOOKMARK 的 Operation 参数。
SQL_CA1_BULK_DELETE_BY_BOOKMARK = 当游标为动态游标时,对 SQLBulkOperations 的调用支持 SQL_DELETE_BY_BOOKMARK 的 Operation 参数。
SQL_CA1_BULK_FETCH_BY_BOOKMARK = 当游标为动态游标时,调用 SQLBulkOperations 时,支持 SQL_FETCH_BY_BOOKMARK 的 Operation 参数。

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_CONCUR_LOCK SQL_ATTR_CONCURRENCY 语句属性。) 这些锁必须与SQL_ATTR_TXN_ISOLATION连接属性设置的事务隔离级别一致。
SQL_CA2_OPT_ROWVER_CONCURRENCY = 支持使用乐观并发控件比较行版本的动态游标。 (可为动态游标SQL_CONCUR_ROWVER SQL_ATTR_CONCURRENCY 语句属性。)
SQL_CA2_OPT_VALUES_CONCURRENCY = 支持使用乐观并发控件比较值的动态游标。 (可以为动态游标SQL_CONCUR_VALUES SQL_ATTR_CONCURRENCY 语句属性。)
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 [游标操作冲突]。) 若要设置此行为,应用程序调用 SQLSetStmtAttr ,并将 SQL_ATTR_SIMULATE_CURSOR 属性设置为 SQL_SC_TRY_UNIQUE。
SQL_CA2_SIMULATE_UNIQUE = 驱动程序保证,当游标为动态游标时,模拟定位更新或删除语句仅影响一行。 如果驱动程序无法保证给定语句的这一点, SQLExecDirectSQLPrepare 返回 SQLSTATE 01001 (游标操作冲突) 。 若要设置此行为,应用程序调用 SQLSetStmtAttr ,并将 SQL_ATTR_SIMULATE_CURSOR 属性设置为 SQL_SC_UNIQUE。
SQL_EXPRESSIONS_IN_ORDERBY 1.0 字符串:“Y”(如果数据源支持 ORDER BY 列表中的表达式);如果不是,则为“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 枚举 SQLGetData 扩展的 SQLUINTEGER 位掩码。

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

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

如果驱动程序支持书签 (固定长度或可变长度) ,则它必须支持对列 0 调用 SQLGetData 。 无论驱动程序使用 SQL_GETDATA_EXTENSIONS InfoTypeSQLGetInfo 的调用返回什么,都需要此支持。
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、SALARY FROM 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 一个 SQLUINTEGER 位掩码,指示支持 INSERT 语句:
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 (,并在说明) 中将“键集驱动的游标”替换为“动态游标”。

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 (,并在说明) 中将“键集驱动的游标”替换为“动态游标”。
SQL_KEYWORDS 2.0 包含所有数据源特定关键字的逗号分隔列表的字符串。 此列表不包含特定于 ODBC 的关键字或数据源和 ODBC 使用的关键字。 此列表表示所有保留关键字;可互操作的应用程序不应在对象名称中使用这些字词。

有关 ODBC 关键字的列表,请参阅附录 C:SQL 语法中的保留关键字#define值SQL_ODBC_KEYWORDS包含以逗号分隔的 ODBC 关键字列表。
SQL_LIKE_ESCAPE_CLAUSE 2.0 字符串:“Y”如果数据源支持 LIKE 谓词中百分比字符 (%) 和下划线字符 (_) 的转义字符,并且驱动程序支持用于定义 LIKE 谓词转义字符的 ODBC 语法;否则为“N”。
SQL_MAX_ASYNC_CONCURRENT_STATEMENTS 3.0 一个 SQLUINTEGER 值,该值指定在异步模式下驱动程序可以在给定连接上支持的最大活动并发语句数。 如果没有特定限制或限制未知,则此值为零。
SQL_MAX_BINARY_LITERAL_LEN 2.0 一个 SQLUINTEGER 值,该值指定最大长度 (十六进制字符数,不包括 SQLGetTypeInfo 返回的文本前缀和后缀,) SQL 语句中的二进制文本。 例如,二进制文本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 值,该值指定最大长度 (字符数,不包括 SQLGetTypeInfo 返回的文本前缀和后缀) SQL 语句中的字符文本。 如果没有最大长度或长度未知,则此值设置为零。
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 字符串:如果为SQL_MAX_ROW_SIZE信息类型返回的最大行大小包括行中所有SQL_LONGVARCHAR和SQL_LONGVARBINARY列的长度,则为“Y”;否则为“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 字符串:如果数据源需要长数据值的长度, (数据类型是SQL_LONGVARCHAR、SQL_LONGVARBINARY或特定于长数据源的数据类型) ,则为“Y”。如果该值未发送到数据源,则为“N”。 有关详细信息,请参阅 SQLBindParameter 函数SQLSetPos 函数
SQL_NON_NULLABLE_COLUMNS 1.0 一个 SQLUSMALLINT 值,该值指定数据源是否支持列中的 NOT NULL:
SQL_NNC_NULL = 所有列都必须可为空。
SQL_NNC_NON_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 = NUL 在结果集的高端进行排序,具体取决于 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 比较运算符。 如果未设置此位,则外部联接中只能使用等于 (=) 比较运算符。

如果这些选项均未作为受支持返回,则不支持外部联接子句。

有关 SQL-92 定义的 SELECT 语句中关系联接运算符的支持的信息,请参阅 SQL_SQL92_RELATIONAL_JOIN_OPERATORS。
SQL_ORDER_BY_COLUMNS_IN_SELECT 2.0 字符串:如果 ORDER BY 子句中的列必须位于选择列表中,则为 “Y”;否则为“N”。
SQL_PARAM_ARRAY_ROW_COUNTS 3.0 一个 SQLUINTEGER,枚举有关参数化执行中行计数可用性的驱动程序属性。 具有以下值:
SQL_PARC_BATCH = 单个行计数可用于每组参数。 这在概念上等效于生成一批 SQL 语句的驱动程序,该语句针对数组中的每个参数集各生成一个 SQL 语句。 可以使用 SQL_PARAM_STATUS_PTR 描述符字段检索扩展的错误信息。
SQL_PARC_NO_BATCH = 只有一个行计数可用,即整个参数数组的语句执行所产生的累积行计数。 这在概念上等效于将 语句与完整参数数组一起视为一个原子单元。 错误的处理方式与执行一个语句时相同。
SQL_PARAM_ARRAY_SELECTS 3.0 一个 SQLUINTEGER,枚举有关参数化执行中结果集可用性的驱动程序属性。 具有以下值:
SQL_PAS_BATCH = 每组参数都有一个可用的结果集。 这在概念上等效于生成一批 SQL 语句的驱动程序,该语句针对数组中的每个参数集各生成一个 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 具有过程数据源供应商名称的字符串;例如,“数据库过程”、“存储过程”、“过程”、“包”或“存储查询”。
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 具有架构数据源供应商名称的字符串;例如,“所有者”、“授权 ID”或“架构”。

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

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

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 TABLEDROP 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 包含所有特殊字符的字符串 (,即除 a 到 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 位掩码,枚举驱动程序和关联数据源支持的 datetime 标量函数(如 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 = 事务只能包含 (SELECTINSERTUPDATEDELETE) 的 DML) 语句 (数据操作语言。 事务中遇到的数据定义语言 (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 一个 SQLUINTEGER 位掩码,枚举对 UNION 子句的支持:
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 一个字符串,指示 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 头文件