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 的大小是基于 InfoType 的 SQLUSMALLINT 或 SQLUINTEGER。 如果在调用 SQLGetInfoW) 时 *InfoValuePtr 是 Unicode 字符串 (,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时,可以通过调用 SQLGetDiagRecConnectionHandle句 SQL_HANDLE_DBC调用 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) SQLExecute、SQLExecDirectSQLMoreResultsStatementHandle 调用并返回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 保留一系列信息类型;驱动程序开发人员必须保留其自己的特定于驱动程序的从 Open Group 使用的值。 SQLGetInfo 不执行 Unicode 转换或 ( 请参阅 附录 A:ODBC程序员参考) 的 ODBC 错误代码,用于驱动程序定义的 InfoTypes。 有关详细信息,请参阅 特定于驱动程序的数据类型、描述符类型、信息类型、诊断类型和属性在 *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 参数的以下值返回数据源可以使用 CONVERT 标量函数将指定的SQL数据类型转换为的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 中弃用的信息类型

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 一个字符串:“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 位掩码,枚举 ALTER DOMAIN 语句中的子句,如数据源支持的 SQL-92 中所述。 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 = < (完全级别) 支持 alter domaindrop>< 域默认子句>

如果 (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 = < (FIPS 过渡级别支持) (> ODBC 3.0)
SQL_AT_DROP_COLUMN_DEFAULT = <支持在 ODBC 3.0) 中间) (级别 (更改 columndrop>< 列默认子句>
SQL_AT_DROP_COLUMN_RESTRICT = < (FIPS 过渡级别支持) (> ODBC 3.0)
SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE (ODBC 3.0)
SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = < (FIPS 过渡级别) (ODBC 3.0) 支持删除列> RESTRICT
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 Server 驱动程序返回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 = 结果是非 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数据类型,应用程序使用 SQL_CONVERT_INTEGER InfoType 调用 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 位掩码,枚举 CREATE ASSERTION 语句中的子句,如数据源支持的 SQL-92 中所述。

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

以下位掩码用于确定支持哪些子句:
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 参数的值。 如果名为 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 属性参数的 SQLGetConnectAttr 来返回为此 InfoType 返回的值。
SQL_DATETIME_LITERALS 3.0 一个 SQLUINTEGER 位掩码,用于枚举数据源支持的SQL-92 日期/时间文本。 请注意,这些是 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 由参数 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 值,驱动程序的语句句柄由 Driver Manager 语句句柄确定,该句柄必须从应用程序传入 *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 = SQL_FETCH_PRIOR 和 SQL_FETCH_RELATIVE 的 FetchOrientation 参数在调用 SQLFetchScroll 时受支持。 (将提取的行集取决于当前游标位置。请注意,这与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 = 一个动态游标,该游标使用足够低级别的锁定来确保可以更新行。 (动态 cursor 可以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_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 [游标操作冲突].) 若要设置此行为,应用程序将调用 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 字符串:如果数据源支持 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) 数据后,使用 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 (EMPLOYEE GROUP BY DEPT 的工资) 。 (ODBC 2.0)
SQL_GB_GROUP_BY_CONTAINS_SELECT = GROUP BY 子句必须在选择列表中包含所有非聚合列。 它可以包含不在选择列表中的列。 例如, SELECT DEPT、MAX (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 (,并在说明) 中替换“动态游标”的“键集驱动游标”。

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 谓词中 (%) %和下划线字符 (_) 的转义字符,并且驱动程序支持 ODBC 语法来定义 LIKE 谓词转义字符;否则为“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 字符串:“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 值,该值指定在结果集中对 NULL 进行排序的位置:
SQL_NC_END = NUL 在结果集末尾排序,而不考虑 ASC 或 DESC 关键字。
SQL_NC_HIGH = NULL 在结果集的高端排序,具体取决于 ASC 或 DESC 关键字。
SQL_NC_LOW = NULL 在结果集的低端排序,具体取决于 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 子句中的列必须位于选择列表中);否则为“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 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 具有实际数据源特定服务器名称的字符串;在 SQLConnectSQLDriverConnectSQLBrowseConnect 期间使用数据源名称时很有用。
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 位掩码,枚举驱动程序和关联的数据源支持的 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_exp1 和string_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 一个字符串,指示 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 头文件