次の方法で共有


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

テーブル値パラメーターのメタデータを取得するには、アプリケーションで 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 を呼び出すと、失敗します。

関連項目

概念

テーブル値パラメーター (ODBC)