次の方法で共有


テーブル値パラメーターの型探索

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

コンシューマー、つまり、SQL Server Native Client OLE DB Provider を使用するクライアント アプリケーションは、コマンド テキストが OLE DB プロバイダーに渡されている場合、各コマンド パラメーターの型を検出できます。 テーブル値パラメーターの型がわかったら、コンシューマーはテーブル値パラメーターの個別の列ごとにメタデータ情報を検出できます。

プロシージャ パラメーターの型情報は、ほとんどのパラメーター型について ICommandWithParameters::GetParameterInfo でサポートされます。 SQL Server 2005 (9.x) 以降では、ユーザー定義型および xml データ型の導入に伴い、ICommandWithParameters によりユーザー定義型の情報 (名前、スキーマ、およびカタログ) を提供することができなくなったため、GetParameterInfo メソッドは十分に目的を果たしていませんでした。 拡張された型情報を提供するために、新しいインターフェイス ISSCommandWithParameters が定義されました。

テーブル値パラメーターの場合は、ISSCommandWithParameters インターフェイスを使用して、詳細情報も検出します。 クライアントは、コマンド オブジェクトを準備した後、ISSCommandWithParameters::GetParameterInfo を呼び出します。 テーブル値パラメーターでは、DBPARAMINFO 構造体の wType メンバーが、プロバイダーによって DBTYPE_TABLE に設定されます。 DBPARAMINFO 構造体の ulParamSize フィールドの値は ~0 です。

コンシューマーは、次に ISSCommandWithParameters::GetParameterProperties を使用して、追加のプロパティ (テーブル値パラメーターの型のカタログ名、テーブル値パラメーターの型のスキーマ名、テーブル値パラメーターの型名、列の順序、および既定の列) を要求します。

型名がわかったら、コンシューマーは個々の列情報を取得するために、IOpenRowset::OpenRowset を呼び出すか、テーブル値パラメーターの型名をテーブル名として指定して、DBSCHEMA_TABLE_TYPE_COLUMNS 行セットを取得する必要があります。

参照

テーブル値パラメーター (OLE DB)
テーブル値パラメーターの使用 (OLE DB)