其他表值参数的元数据

若要检索表值参数的元数据,应用程序应调用 SQLProcedureColumnsSQLProcedureColumns 为一个表值参数返回一行。已添加两个特定于 SQL Server 的额外列:SS_TYPE_CATALOG_NAME 和 SS_TYPE_SCHEMA_NAME,以便提供与表值参数关联的表类型的架构和目录信息。为了符合 ODBC 规范,SS_TYPE_CATALOG_NAME 和 SS_TYPE_SCHEMA_NAME 的显示位置位于 SQL Server 早期版本中添加的所有驱动程序特定列之前,并位于 ODBC 自身委托的所有列之后。

下表列出了对表值参数非常重要的列。

列名

数据类型

值/注释

DATA_TYPE

Smallint(非 NULL)

SQL_SS_TABLE

TYPE_NAME

WVarchar(128)(非 NULL)

表值参数的类型名称。

COLUMN_SIZE

Integer

NULL

BUFFER_LENGTH

Integer

0

DECIMAL_DIGITS

Smallint

NULL

NUM_PREC_RADIX

Smallint

NULL

NULLABLE

Smallint(非 NULL)

SQL_NULLABLE

REMARKS

Varchar

NULL

COLUMN_DEF

WVarchar(4000)

NULL

SQL_DATA_TYPE

Smallint(非 NULL)

SQL_SS_TABLE

SQL_DATETIME_SUB

Smallint

NULL

CHAR_OCTET_LENGTH

Integer

NULL

ORDINAL_POSITION

Integer(非 NULL)

参数的序号位置。

IS_NULLABLE

Varchar

"YES"

SS_TYPE_CATALOG_NAME

WVarchar(128)(非 NULL)

包含表值参数表类型的类型定义的目录。

SS_TYPE_SCHEMA_NAME

WVarchar(128)(非 NULL)

包含表值参数表类型的类型定义的架构。

WVarchar 列在 ODBC 规范中定义为 Varchar,但实际上在所有最新 SQL Server ODBC 驱动程序中作为 WVarchar 返回。该更改是在向 ODBC 3.5 规范添加 Unicide 支持时执行的,但不能显式指出。

若要获取有关表值参数的其他元数据,应用程序应使用目录函数 SQLColumnsSQLPrimaryKeys。在针对表值参数调用这些函数之前,应用程序必须将语句属性 SQL_SOPT_SS_NAME_SCOPE 设置为 SQL_SS_NAME_SCOPE_TABLE_TYPE。该值表示应用程序需要表类型的元数据,而不是实际表。然后,应用程序将表值参数的 TYPE_NAME 作为 TableName 参数传递。SS_TYPE_CATALOG_NAME 和 SS_TYPE_SCHEMA_NAME 分别用于 CatalogName 和 SchemaName 参数,以便标识表值参数的目录和架构。在应用程序检索完表值参数的元数据之后,该应用程序必须将 SQL_SOPT_SS_NAME_SCOPE 设置回原来的默认值 SQL_SS_NAME_SCOPE_TABLE。

将 SQL_SOPT_SS_NAME_SCOPE 设置为 SQL_SS_NAME_SCOPE_TABLE 时,对链接服务器的查询将失败。对包含服务器组件的目录调用 SQLColumnsSQLPrimaryKeys 将失败。

请参阅

概念