可用于 SQLColAttribute 检索已准备或已执行的 ODBC 语句的结果集列的属性。 调用 SQLColAttribute 准备好的语句会导致到 SQL Server 往返。 SQL Server Native Client ODBC 驱动程序在语句执行过程中接收结果集列数据,因此在 SQLExecute 或 SQLExecDirect 完成后调用SQLColAttribute不涉及服务器往返。
注释
ODBC 列标识符属性在所有 SQL Server 结果集上都不可用。
| 字段标识符 | DESCRIPTION |
|---|---|
| SQL_COLUMN_TABLE_NAME | 可用于从生成服务器游标的语句中检索的结果集,或针对包含 FOR BROWSE 子句的执行 SELECT 语句。 |
| SQL_DESC_BASE_COLUMN_NAME | 可用于从生成服务器游标的语句中检索的结果集,或针对包含 FOR BROWSE 子句的执行 SELECT 语句。 |
| SQL_DESC_BASE_TABLE_NAME | 可用于从生成服务器游标的语句中检索的结果集,或针对包含 FOR BROWSE 子句的执行 SELECT 语句。 |
| SQL_DESC_CATALOG_NAME | 数据库名称 可用于从生成服务器游标的语句中检索的结果集,或针对包含 FOR BROWSE 子句的执行 SELECT 语句。 |
| SQL_DESC_LABEL | 在所有结果集上都可用。 该值与SQL_DESC_NAME字段的值相同。 仅当列是表达式的结果且表达式不包含标签赋值时,该字段才为零长度。 |
| SQL_DESC_NAME | 在所有结果集上都可用。 该值与SQL_DESC_LABEL字段的值相同。 仅当列是表达式的结果且表达式不包含标签赋值时,该字段才为零长度。 |
| SQL_DESC_SCHEMA_NAME | 所有者名称。 可用于从生成服务器游标的语句中检索的结果集,或针对包含 FOR BROWSE 子句的执行 SELECT 语句。 仅当为 SELECT 语句中的列指定所有者名称时可用。 |
| SQL_DESC_TABLE_NAME | 可用于从生成服务器游标的语句中检索的结果集,或针对包含 FOR BROWSE 子句的执行 SELECT 语句。 |
| SQL_DESC_UNNAMED | 为结果集中的所有列SQL_NAMED,除非列是表达式中不包含标签赋值的表达式的结果。 当SQL_DESC_UNNAMED返回SQL_UNNAMED时,所有 ODBC 列标识符属性都包含该列的长度为零的字符串。 |
SQL Server Native Client ODBC 驱动程序使用 SET FMTONLY 语句来减少为准备但未执行的语句调用时 SQLColAttribute 的服务器开销。
对于大型值类型, SQLColAttribute 将返回以下值:
| 字段标识符 | 更改说明 |
|---|---|
| SQL_DESC_DISPLAY_SIZE | 这是显示列中数据所需的最大字符数。 对于大型值类型列,返回的值SQL_SS_LENGTH_UNLIMITED。 |
| SQL_DESC_LENGTH | 返回结果集中列的实际长度。 对于大型值类型列,返回的值SQL_SS_LENGTH_UNLIMITED。 |
| SQL_DESC_OCTET_LENGTH | 返回大值类型列的最大长度。 SQL_SS_LENGTH_UNLIMITED用于指示无限制大小。 |
| SQL_DESC_PRECISION | 返回大型值类型列的值SQL_SS_LENGTH_UNLIMITED。 |
| SQL_DESC_TYPE | 返回大型值类型的SQL_VARCHAR、SQL_WVARCHAR和SQL_VARBINARY。 |
| SQL_DESC_TYPE_NAME | 返回大型值类型的“varchar”、“varbinary”、“nvarchar”。 |
对于所有版本,仅当一批准备好的 SQL 语句生成多个结果集时,才会报告第一个结果集的列属性。
以下列属性是由 SQL Server Native Client ODBC 驱动程序公开的扩展。 SQL Server Native Client ODBC 驱动程序返回 NumericAttrPtr 参数中的所有值。 这些值以 SDWORD(带符号长)的形式返回,但SQL_CA_SS_COMPUTE_BYLIST除外,这是指向 WORD 数组的指针。
| 字段标识符 | 返回的值 |
|---|---|
| SQL_CA_SS_COLUMN_HIDDEN* | 如果引用的列是创建以支持包含 FOR BROWSE 的 Transact-SQL SELECT 语句的隐藏主键的一部分,则为 TRUE。 |
| SQL_CA_SS_COLUMN_ID | 当前 Transact-SQL SELECT 语句中 COMPUTE 子句结果列的序号位置。 |
| SQL_CA_SS_COLUMN_KEY* | 如此 如果引用的列是行的主键的一部分,并且 Transact-SQL SELECT 语句包含 FOR BROWSE。 |
| SQL_CA_SS_COLUMN_OP | 指定负责 COMPUTE 子句列中值的聚合运算符的整数。 整数值的定义在 sqlncli.h 中。 |
| SQL_CA_SS_COLUMN_ORDER | 列在 ODBC 或 Transact-SQL SELECT 语句的 ORDER BY 子句中的序号位置。 |
| SQL_CA_SS_COLUMN_SIZE | 将从列检索到的数据值绑定到SQL_C_BINARY变量所需的最大长度(以字节为单位)。 |
| SQL_CA_SS_COLUMN_SSTYPE | 存储在 SQL Server 列中的本机数据类型。 类型值的定义在 sqlncli.h 中。 |
| SQL_CA_SS_COLUMN_UTYPE | SQL Server 列的用户定义数据类型的基数据类型。 类型值的定义在 sqlncli.h 中。 |
| SQL_CA_SS_COLUMN_VARYLEN | 如果列的数据长度可能有所不同,则为 TRUE;否则为 FALSE。 |
| SQL_CA_SS_COMPUTE_BYLIST | 指向指定 COMPUTE 子句 BY 短语中使用的列的 WORD(无符号短符号)数组的指针。 如果 COMPUTE 子句未指定 BY 短语,则返回 NULL 指针。 数组的第一个元素包含 BY 列表列的计数。 其他元素是列序号。 |
| SQL_CA_SS_COMPUTE_ID | 作为当前 Transact-SQL SELECT 语句中 COMPUTE 子句结果的行的 computeid。 |
| SQL_CA_SS_NUM_COMPUTES | 当前 Transact-SQL SELECT 语句中指定的 COMPUTE 子句数。 |
| SQL_CA_SS_NUM_ORDERS | ODBC 或 Transact-SQL SELECT 语句的 ORDER BY 子句中指定的列数。 |
* 如果语句属性SQL_SOPT_SS_HIDDEN_COLUMNS设置为SQL_HC_ON,则可用。
SQL Server 2005 引入了特定于驱动程序的描述符字段,以提供其他信息来分别表示 XML 架构集合名称、架构名称和目录名称。 如果这些属性包含非字母数字字符,则不需要引号或转义字符。 下表列出了这些新的描述符字段:
| 列名称 | 类型 | DESCRIPTION |
|---|---|---|
| SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME | CharacterAttributePtr | 在其中定义 XML 架构集合名称的目录的名称。 如果找不到目录名称,则此变量包含空字符串。 此信息是从 IRD 的SQL_DESC_SS_XML_SCHEMACOLLECTION_CATALOG_NAME记录字段返回的,该字段是读写字段。 |
| SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAM E | CharacterAttributePtr | 定义 XML 架构集合名称的架构的名称。 如果找不到架构名称,则此变量包含空字符串。 此信息是从 IRD 的SQL_DESC_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME记录字段返回的,该字段是读写字段。 |
| SQL_CA_SS_XML_SCHEMACOLLECTION_NAME | CharacterAttributePtr | XML 架构集合的名称。 如果找不到此名称,则此变量包含空字符串。 此信息从 IRD 的SQL_DESC_SS_XML_SCHEMACOLLECTION_NAME记录字段返回,该字段是读写字段。 |
此外,SQL Server 2005 引入了新的特定于驱动程序的描述符字段,为结果集的用户定义类型(UDT)列或存储过程或参数化查询的 UDT 参数提供其他信息。 如果这些属性包含非字母数字字符,则不需要引号或转义字符。 下表列出了这些新的描述符字段:
| 列名 | 类型 | DESCRIPTION |
|---|---|---|
| SQL_CA_SS_UDT_CATALOG_NAME | CharacterAttributePtr | 包含 UDT 的目录的名称。 |
| SQL_CA_SS_UDT_SCHEMA_NAME | CharacterAttributePtr | 包含 UDT 的架构的名称。 |
| SQL_CA_SS_UDT_TYPE_NAME | CharacterAttributePtr | UDT 的名称。 |
| SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME | CharacterAttributePtr | UDT 的程序集限定名称。 |
现有描述符字段标识符SQL_DESC_TYPE_NAME用于指示 UDT 的名称。 UDT 类型列的SQL_DESC_TYPE字段SQL_SS_UDT。
SQLColAttribute 对增强的日期和时间功能的支持
有关为日期/时间类型返回的值,请参阅 参数和结果元数据中的“IRD 字段中返回的信息”部分。
有关详细信息,请参阅日期和时间改进(ODBC)。
SQLColAttribute 对大型 CLR UDT 的支持
SQLColAttribute 支持大型 CLR 用户定义的类型(UDT)。 有关详细信息,请参阅大型 CLR 用户定义的类型(ODBC)。
SQLColAttribute 对稀疏列的支持
SQLColAttribute 查询新的实现行描述符(IRD)字段(SQL_CA_SS_IS_COLUMN_SET),以确定列是否为 column_set 列。
有关详细信息,请参阅稀疏列支持(ODBC)。