次の方法で共有


テーブル値パラメータの追加メタデータ

テーブル値パラメータのメタデータを取得するには、アプリケーションで SQLProcedureColumns を呼び出します。SQLProcedureColumns は、テーブル値パラメータに 1 行を返します。テーブル値パラメータに関連付けられたテーブル型のスキーマ情報とカタログ情報を提供するために、SS_TYPE_CATALOG_NAME、SS_TYPE_SCHEMA_NAME という、SQL Server 固有の 2 つの列が追加されました。SS_TYPE_CATALOG_NAME および SS_TYPE_SCHEMA_NAME は、ODBC 仕様に準拠して、以前のバージョンの 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 仕様に Unicode のサポートが追加されたときに行われましたが、明示されていませんでした。

アプリケーションでは、テーブル値パラメータの追加メタデータを取得するために、カタログ関数 SQLColumns および SQLPrimaryKeys を使用します。これらの関数がテーブル値パラメータのために呼び出される前に、アプリケーションでは、ステートメント属性 SQL_SOPT_SS_NAME_SCOPE を SQL_SS_NAME_SCOPE_TABLE_TYPE に設定する必要があります。この値は、アプリケーションが実際のテーブルではなくテーブル型のメタデータを必要としていることを示します。次に、アプリケーションは、TableName パラメータとして、テーブル値パラメータの TYPE_NAME を渡します。テーブル値パラメータのカタログとスキーマを識別するために、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 に設定されると、リンク サーバーへのクエリは失敗します。サーバー コンポーネントが格納されているカタログを使用して SQLColumns または SQLPrimaryKeys を呼び出すと、失敗します。