OLE DB テーブル値パラメータの型のサポート
このトピックでは、テーブル値パラメータに対する OLE DB 型のサポートについて説明します。
テーブル値パラメータの行セット オブジェクト
テーブル値パラメータの特殊な行セット オブジェクトを作成できます。テーブル値パラメータの行セット オブジェクトは、ITableDefinitionWithConstraints::CreateTableWithConstraints または IOpenRowset::OpenRowset を使用して作成します。そのためには、pTableID パラメータの eKind メンバに DBKIND_GUID_NAME を設定し、CLSID_ROWSET_INMEMORY を guid メンバとして指定します。テーブル値パラメータのサーバーの型名は、IOpenRowset::OpenRowset の使用時に pTableID の pwszName メンバに指定する必要があります。テーブル値パラメータの行セット オブジェクトは、標準の SQL Server Native Client OLE DB プロバイダ オブジェクトと同様に動作します。
const GUID CLSID_ROWSET_TVP =
{0xc7ef28d5, 0x7bee, 0x443f, {0x86, 0xda, 0xe3, 0x98, 0x4f, 0xcd, 0x4d, 0xf9}};
CoType RowsetTVP
{
[mandatory] interface IAccessor;
[mandatory] interface IColumnsInfo;
[mandatory] interface IConvertType;
[mandatory] interface IRowset;
[mandatory] interface IRowsetInfo;
[optional] interface IColumnsRowset;
[optional] interface IRowsetChange;
[optional] interface ISupportErrorInfo;
};
DBTYPE_TABLE
新しい型 DBTYPE_TABLE はテーブル型を表します。この型は、DBTYPE を必要とするさまざまな OLE DB インターフェイスのテーブル値パラメータを示します。
#define DBTYPE_TABLE (143)
DBTYPE_TABLE の形式は、DBTYPE_IUNKNOWN と同じです。これは、データ バッファ内のオブジェクトへのポインタです。バインドでの完全な指定のため、コンシューマは、行セット オブジェクト インターフェイス (IID_IRowset) の 1 つに iid を設定して、DBOBJECT バッファをいっぱいにします。DBOBJECT がバインドで指定されない場合は、IID_IRowset が想定されます。
DBTYPE_TABLE とその他の型との間の変換はサポートされません。IConvertType::CanConvert は、DBTYPE_TABLE から DBTYPE_TABLE への変換以外の要求に対するサポートされない変換について、S_FALSE を返します。これは、Command オブジェクトの DBCONVERTFLAGS_PARAMETER を想定します。