テーブル値パラメーターの型の検出 (OLE DB ドライバー)

対象者:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analyticsアナリティクスプラットフォームシステム(PDW)Microsoft FabricにおけるSQLデータベース

OLE DB ドライバーのダウンロード

コンシューマー、つまり OLE DB Driver for SQL Server を使用するクライアント アプリケーションでは、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)