次の方法で共有


OLE DB テーブル値パラメータの型のサポート (メソッド)

次の OLE DB 標準メソッドでは、テーブル値パラメータがサポートされます。

メソッド

テーブル値パラメータのサポート

ITableDefinitionWithConstraints::CreateTableWithConstraints

テーブル値パラメータの型情報がわかっており、その型情報に基づいてテーブル値パラメータの行セット オブジェクトのインスタンスを作成する場合に使用します。

詳細については、「テーブル値パラメータの行セットの作成」の「静的なシナリオ」を参照してください。

IOpenRowset::OpenRowset

テーブル値パラメータの型情報がわかっておらず、サーバーから取得したメタデータ情報に基づいてテーブル値パラメータの行セット オブジェクトのインスタンスを作成する場合に使用します。

詳細については、「テーブル値パラメータの行セットの作成」の「動的なシナリオ」を参照してください。

ISSCommandWithParameters::SetParameterInfo

テーブル値パラメータのコマンド パラメータを指定するには、コンシューマが DBPARAMBINDINFO 構造体の pwszName メンバでパラメータの型を "table" または "DBTYPE_TABLE" として指定します。ulParamSize は ~0 に設定されます。詳細については、「テーブル値パラメータを含むコマンドの実行」の「テーブル値パラメータの指定」を参照してください。

ISSCommandWithParameters::SetParameterProperties

スキーマ名、型名、列の順序、既定の列など、テーブル値パラメータ固有のプロパティを設定します。

コンシューマは、SSPARAMPROPS 構造体の iOrdinal でパラメータの序数を指定します。要求されるプロパティ セットは DBPROPSET_SQLSERVERPARAMETER です。

ISSCommandWithParameters::GetParameterInfo

指定されたコマンドのすべてのパラメータの型を取得します。

テーブル値パラメータの場合、DBPARAMINFO 構造体の wType フィールドの型は DBTYPE_TABLE になります。不明な長さを示すために、ulParamSize フィールドは ~0 に設定されます。

ISSCommandWithParameters::GetParameterProperties

DBTYPE_TABLE 型のパラメータの追加の型情報を取得します。

コンシューマは、SSPARAMPROPS 構造体の iOrdinal メンバでパラメータの序数を指定します。コンシューマは、ISSCommandWithParameters::SetParameterProperties に一覧表示される DBPROPSET_SQLSERVERPARAMETER プロパティ セットのプロパティを要求できます。

コンシューマではテーブル値パラメータの型がわからないため、プロバイダは SSPROP_PARAM_TYPE_TYPENAME、SSPROP_PARAM_TYPE_SCHEMANAME、および SSPROP_PARAM_TYPE_CATALOGNAME に正しい値を設定する必要があります。残りのプロパティ、SSPROP_PARAM_TABLE_DEFAULT_COLUMNS および SSPROP_PARAM_TABLE_COLUMN_SORT_ORDER の値は、既定の値になります。コンシューマがテーブル値パラメータの型名を検出した後、IOpenRowset::OpenRowset を使用して、テーブル値パラメータの名前を指定してこのテーブル値パラメータのインスタンスを作成します。詳細については、「テーブル値パラメータの型の検出」を参照してください。

IRowsetInfo::GetProperties

テーブル値パラメータの行セット プロパティを取得します。コンシューマはこれらのプロパティを使用して、バインドを最適に設定することができます。

IColumnsRowset::GetColumnsRowset

SQL Server テーブルに関するメタデータ情報を取得します。テーブル値パラメータの場合、この同じインターフェイスにより、次のような各列に関する詳細なメタデータ情報が提供されます。

  • DBCOLUMN_FLAGS では、DBCOLUMNFLAGS_ISNULLABLE ビットを使用して NULL 値許容を示します。

  • DBCOLUMN_ISUNIQUE では、列が ID 列かどうかを示します。

  • DBCOLUMN_COMPUTEMODE は、列が計算列かどうかを示します。

IAccessor::CreateAccessor

テーブル値パラメータの行セット オブジェクトをコマンド パラメータにバインドするには、wType メンバを DBTYPE_TABLE に設定してアクセサを作成します。DBOBJECT 構造体には、IID_IRowset または iid メンバのその他の有効な行セット オブジェクトのインターフェイスが含まれます。フィールドの残りの部分は、DBTYPE_IUNKNOWN と同じように扱われます。