表值参数构成列的描述符字段

本部分中介绍的表值参数描述符字段是通过将 SQLSetDescFieldSQLSetDescField 与实现参数描述符 (IPD) 的句柄结合使用来操作的。

备注

SQL_DESC_AUTO_UNIQUE_VALUE 用于表值参数以及其他功能。

属性名称

类型

说明

SQL_DESC_AUTO_UNIQUE_VALUE

SQLINTEGER

SQL_TRUE 指示该列是标识列。

SQL Server 可使用此信息来优化性能,但不要求应用程序为标识列设置此属性。

以下属性将添加到应用程序参数描述符 (APD) 和实现参数描述符 (IPD) 中的所有参数类型:

属性名称

类型

说明

SQL_CA_SS_COLUMN_COMPUTED

SQLSMALLINT

SQL_TRUE 指示该列是计算列。

SQL Server 可使用此信息来优化性能,但不要求应用程序为计算列设置此属性。

对于非表值参数列的绑定,将忽略此属性。

SQL_CA_SS_COLUMN_IN_UNIQUE_KEY

SQLSMALLINT

SQL_TRUE 指示表值参数列参与唯一键。 这可能导致查询性能提高。 对于非表值参数列的绑定,将忽略此属性。

SQL_CA_SS_COLUMN_SORT_ORDER

SQLSMALLINT

指示表值参数列的排序顺序。 这可能导致查询性能提高。 对于非表值参数列的绑定,将忽略此属性。 下面列出了可能的值:

  • SQL_SS_ASCENDING_ORDER

  • SQL_SS_DESCENDING_ORDER

  • SQL_SS_ORDER_UNSPECIFIED

SQL_SS_ASCENDING_ORDER 和 SQL_SS_DESCENDING_ORDER 以外的值将产生 SQLSTATE 为 HY024 的错误和“属性值无效”消息,并且将被视为此属性的默认值 SQL_SS_ORDER_UNSPECIFIED。

SQL_CA_SS_COLUMN_SORT_ORDINAL

SQLSMALLINT

指示表值参数列在列集中的序号,它定义表值参数的整体排序顺序。 这可能导致查询性能提高。 对于非表值参数列的绑定,将忽略此属性。 排序序号从 1 开始。 默认值 0 指示表值参数列未进行列排序。

SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE

SQLSMALLINT

指示表值参数中的所有行是否都将具有此列的默认值。 对于表值参数,无法逐行选择默认值。 值 SQL_FALSE 指示行将具有非默认值。 这是默认设置。 值 SQL_TRUE 指示此列的所有行都将具有默认值。

如果设置为 SQL_TRUE,则不会将任何数据发送到服务器。

如果服务器处理不需要相应列值,则此字段还可以用于标识列或计算列。

这些属性仅对表值参数列有效。 对于其他参数,将忽略它们。

如果为表值参数列设置了 SQL_CA_SS_COL_HAS_DEFAULT_VALUE,则该列的 SQL_DESC_DATA_PTR 必须为 Null 指针。 否则,SQLExecuteSQLExecDirect 将返回 SQL_ERROR。 将生成带有 SQLSTATE=07S01 和消息“列 <c> 参数 <p> 不允许使用默认参数”的诊断记录,其中 <p> 为参数序号,<c> 为列序号。

请参阅

概念

表值参数 (ODBC)