命令資料流
ADO 一直都支援 CommandText 屬性所指定的字串格式命令輸入。 或者,您也可以使用 ADO 2.7 或更新版本,將資料流指派給 CommandStream 屬性,以使用資訊流進行命令輸入。 您可以指派 ADO Stream 物件,或任何支援 COM IStream 介面的物件。
命令資料流的內容將從 ADO 傳遞至您的提供者,因此您的提供者必須支援以資料流進行命令輸入,此功能才能運作。 例如,SQL Server 支援以 XML 範本或 OpenXML 延伸模組形式向 Transact-SQL 進行的查詢。
資料流的詳情必須由提供者解譯,因此您必須設定 Dialect 屬性以指定命令方言。 Dialect 的值為字串,且包含由提供者定義的 GUID。 如需提供者所支援 Dialect 的有效值相關資訊,請參閱提供者文件。
XML 範本查詢範例
下列範例會以 VBScript 寫入 Northwind 資料庫。
首先,初始化並開啟將用來包含查詢資料流的 Stream 物件:
Dim adoStreamQuery
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")
adoStreamQuery.Open
查詢資料流的內容會是 XML 範本查詢。
範本查詢需使用由 <sql:query> 標籤的 sql:prefix 所識別之 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