資料表值參數類型探索
如果命令文字已經提供給 OLE DB 提供者,取用者 (也就是使用 SQL Server Native Client OLE DB 提供者的用戶端應用程式) 便可以探索每一個命令參數的類型。 知道了資料表值參數的類型之後,取用者就可以針對資料表值參數的每一個個別資料行來探索中繼資料資訊。
ICommandWithParameters::GetParameterInfo 可針對大多數的參數類型來支援程序參數的類型資訊。 從 SQL Server 2005 開始,隨著使用者定義型別和 xml 資料類型的導入,GetParameterInfo 方法不足以支撐這個用途,因為透過 ICommandWithParameters 提供使用者定義型別資訊 (名稱、結構描述和目錄) 是不可行的。 因此定義了新的介面 ISSCommandWithParameters 來提供擴充類型資訊。
如果是資料表值參數,您也可以使用 ISSCommandWithParameters 介面來探索詳細資訊。 用戶端會在備妥命令物件之後呼叫 ISSCommandWithParameters::GetParameterInfo。 如果是資料表值參數,DBPARAMINFO 結構的 wType 成員會由提供者設定為 DBTYPE_TABLE。 DBPARAMINFO 結構的 ulParamSize 欄位具有 ~0 的值。
然後取用者會使用 ISSCommandWithParamters::GetParameterProperties 來要求其他屬性 (資料表值參數類型目錄名稱、資料表值參數類型結構描述名稱、資料表值參數類型名稱、資料行排序和預設資料行)。
如果在知道了類型名稱之後要擷取個別資料行資訊,取用者必須呼叫 IOpenRowset::OpenRowset 或取得 DBSCHEMA_TABLE_TYPE_COLUMNS 資料列集,其方式是將資料表值參數類型名稱指定為資料表名稱。