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 具有相同的格式。它是資料緩衝區中物件的指標。若為繫結中的完整規格,取用者會填滿 DBOBJECT 緩衝區,並將 iid 設定為其中一個資料列集物件介面 (IID_IRowset)。如果繫結中沒有指定任何 DBOBJECT,系統就會採用 IID_IRowset。
不支援針對任何其他類型在 DBTYPE_TABLE 之間來回轉換。IConvertType::CanConvert 會針對任何要求的不支援轉換傳回 S_FALSE,但 DBTYPE_TABLE 與 DBTYPE_TABLE 的轉換除外。這會採用 Command 物件的 DBCONVERTFLAGS_PARAMETER。