次の方法で共有


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

テーブル値パラメーターのメタデータを取得するために、アプリケーションは SQLProcedureColumns を呼び出します。 テーブル値パラメーターの場合、SQLProcedureColumns は 1 行を返します。 テーブル値パラメーターに関連付けられたテーブル型のスキーマとカタログ情報を提供するために、SQL Server 固有の 2 つの列 (SS_TYPE_CATALOG_NAMEとSS_TYPE_SCHEMA_NAME) が追加されました。 ODBC 仕様に準拠して、SS_TYPE_CATALOG_NAMEとSS_TYPE_SCHEMA_NAMEは、以前のバージョンの SQL Server で追加されたすべてのドライバー固有の列の前、および ODBC 自体によって義務付けられているすべての列の後に表示されます。

テーブル値パラメーターにとって重要な列を次の表に示します。

列名 データの種類 値およびコメント
データ型 Smallint (NULL 以外) SQL_SS_TABLE
TYPE_NAME WVarchar(128) (NULL 以外) テーブル値パラメーターの型名
COLUMN_SIZE 整数 ヌル
BUFFER_LENGTH 整数 0
DECIMAL_DIGITS スモール・イント ヌル
NUM_PREC_RADIX スモール・イント ヌル
NULL可能 Smallint (NULL 以外) SQL_NULLABLE
備考 Varchar ヌル
COLUMN_DEF WVarchar(4000) ヌル
SQL_DATA_TYPE Smallint (NULL 以外) SQL_SS_TABLE
SQL_DATETIME_SUB スモール・イント ヌル
CHAR_OCTET_LENGTH 整数 ヌル
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 として返されます。 この変更は、Unicide のサポートが ODBC 3.5 仕様に追加されたが、明示的に呼び出されなかった場合に行われました。

テーブル値パラメーターの追加メタデータを取得するために、アプリケーションはカタログ関数 SQLColumns と SQLPrimaryKeys を使用します。 これらの関数がテーブル値パラメーターのために呼び出される前に、アプリケーションでは、ステートメント属性 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 に設定されると、リンク サーバーへのクエリは失敗します。 サーバー コンポーネントを含むカタログを含む SQLColumns または SQLPrimaryKeys の呼び出しは失敗します。

こちらもご覧ください

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