次の方法で共有


コマンド ストリーム

ADO では、CommandText プロパティで指定された文字列形式のコマンド入力が常にサポートされています。 代わりに、ADO 2.7 以降では、CommandStream プロパティにストリームを割り当てることで、コマンド入力に情報のストリームを使用することもできます。 ADO Stream オブジェクト、または COM IStream インターフェイスをサポートする任意のオブジェクトを割り当てることができます。

コマンド ストリームの内容は ADO からプロバイダーに渡されるだけなので、この機能を機能させるには、プロバイダーがストリームによるコマンド入力をサポートする必要があります。 たとえば、SQL Server では、Transact-SQL に対する XML テンプレートまたは OpenXML 拡張機能の形式のクエリがサポートされます。

ストリームの詳細はプロバイダーによって解釈される必要があるため、言語の プロパティを設定してコマンド言語を指定する必要があります。 方言 の値は、プロバイダーによって定義される GUID を含む文字列です。 プロバイダーがサポートする 方言 の有効な値については、プロバイダーのドキュメントを参照してください。

XML テンプレート クエリの例

次の例は、VBScript で Northwind データベースに書き込まれています。

まず、クエリ ストリームを格納するために使用する Stream オブジェクトを初期化して開きます。

Dim adoStreamQuery  
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")  
adoStreamQuery.Open  

クエリ ストリームの内容は XML テンプレート クエリになります。

テンプレート クエリには、<sql:query> タグの sql: プレフィックスによって識別される 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  

ADO Command オブジェクトの CommandStream プロパティに adoStreamQuery を割り当てます。

Dim adoCmd  
Set adoCmd  = Server.CreateObject("ADODB.Command"")  
adoCmd.CommandStream = adoStreamQuery  

コマンド言語 言語を指定します。これは、SQL Server OLE DB プロバイダーがコマンド ストリームを解釈する方法を示します。 プロバイダー固有の GUID で指定された方言:

adoCmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"  

最後に、クエリを実行し、結果を Recordset オブジェクトに返します。

Set objRS = adoCmd.Execute