命令數據流
ADO 一律支援 CommandText 屬性所指定的字串格式命令輸入。 使用 ADO 2.7 或更新版本時,也可以將數據流指派給 CommandStream 屬性,用作命令輸入。 您可以指派 ADO Stream 物件,或任何支援 COM IStream 介面的物件。
命令數據流的內容只會從 ADO 傳遞至您的提供者,因此您的提供者必須透過資料流支援命令輸入,此功能才能運作。 例如,SQL Server 支援 XML 範本形式的查詢,或 Transact-SQL 的 OpenXML 延伸模組。
由於數據流的詳細數據必須由提供者解譯,因此您必須藉由設定 Dialect 屬性來指定命令方言。 方言 的值是包含由提供者定義的 GUID 字串。 如需提供者所支援 方言 有效值的相關信息,請參閱提供者檔。
XML 範本查詢範例
下列範例是以 VBScript 撰寫至 Northwind 資料庫。
首先,初始化並開啟將用來包含查詢數據流的 Stream 物件:
Dim adoStreamQuery
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")
adoStreamQuery.Open
查詢數據流的內容將是 XML 範本查詢。
範本查詢需要 sql:sql:query> 標籤 <前置詞所識別的 XML 命名空間參考。 SQL SELECT 語句會包含為 XML 範本的內容,並指派給字串變數,如下所示:
sQuery = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<sql:query> SELECT * FROM PRODUCTS ORDER BY PRODUCTNAME </sql:query>
</ROOT>"
接下來,將字串寫入資料流:
adoStreamQuery.WriteText sQuery, adWriteChar
adoStreamQuery.Position = 0
將 adoStreamQuery 指派給 ADO Command 物件的 CommandStream 属性:
Dim adoCmd
Set adoCmd = Server.CreateObject("ADODB.Command"")
adoCmd.CommandStream = adoStreamQuery
指定命令語言 Dialect,指出 SQL Server OLE DB 提供者應該如何解譯命令數據流。 由供應者特定的 GUID 指定的方言:
adoCmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"
最後,執行查詢並將結果傳回至 Recordset 物件:
Set objRS = adoCmd.Execute