使用 SQLSetDescField 和 SQLSetDescField 以及实现参数描述符( IPD )的句柄作本部分中介绍的表值参数描述符字段。
注解
SQL_DESC_AUTO_UNIQUE_VALUE用于表值参数和其他功能。
| 属性名称 | 类型 | DESCRIPTION |
|---|---|---|
| SQL_DESC_AUTO_UNIQUE_VALUE | SQLINTEGER | SQL_TRUE指示此列是标识列。 SQL Server 可以使用此信息来优化性能,但应用程序不需要为标识列设置它。 |
以下属性将添加到应用程序参数描述符(APD)和实现参数描述符(IPD)中的所有参数类型:
| 属性名称 | 类型 | DESCRIPTION |
|---|---|---|
| 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必须是空指针。 否则,SQLExecute 或 SQLExecDirect 将返回SQL_ERROR。 诊断记录将使用 SQLSTATE=07S01 生成,消息“对参数 p>、column <c> 使用默认参数无效”,其中 <p> 是参数<序号,<c> 是列序号。