次の方法で共有


準備されたステートメント用のテーブル値パラメータのメタデータ

アプリケーションでは、SQLNumParams および SQLDescribeParam を使用して、準備されたプロシージャ呼び出し用にメタデータを取得できます。テーブル値パラメータの場合、DataTypePtr が SQL_SS_TABLE に設定されます。SQL_CA_SS_TYPE_NAME、SQL_CA_SS_TYPE_CATALOG_NAME、および SQL_CA_SS_TYPE_SCHEMA_NAME 用に SQLGetDescField を使用して、追加のメタデータを取得できます。

SQL_CA_SS_TYPE_NAME、SQL_CA_SS_TYPE_CATALOG_NAME、および SQL_CA_SS_TYPE_SCHEMA_NAME を SQLColumns に使用して、テーブル値パラメータに関連付けられたテーブル型の列のメタデータを取得できます。この場合、SQLColumns を呼び出す前に、SQL_SOPT_SS_NAME_SCOPE を SQL_SS_NAME_SCOPE_TABLE_TYPE に設定する必要があります。その後、アプリケーションでテーブル値パラメータの列のメタデータの取得が完了したら、SQL_SOPT_SS_NAME_SCOPE を既定値の SQL_SS_NAME_SCOPE_TABLE に戻す必要があります。

SQL_CA_SS_TYPE_NAME、SQL_CA_SS_TYPE_CATALOG_NAME、および SQL_CA_SS_TYPE_SCHEMA_NAME は、CLR ユーザー定義型パラメータでも使用できます。

ストアド プロシージャ呼び出しではない準備されたステートメント用にテーブル値パラメータのメタデータを取得することはできません。取得しようとすると、アプリケーションから SQLSTATE 42000 で "構文エラーまたはアクセス違反です" というメッセージの SQL_ERROR が返されます。