다음을 통해 공유


명령 스트림

ADO는 CommandText 속성에 지정된 문자열 형식의 명령 입력을 항상 지원합니다. 또는 ADO 2.7 이상을 사용하여 CommandStream 속성에 스트림을 할당하여 명령 입력에 대한 정보 스트림을 사용할 수도 있습니다. ADO Stream 개체 또는 COM IStream 인터페이스를 지원하는 모든 개체를 할당할 수 있습니다.

명령 스트림의 내용은 단순히 ADO에서 공급자로 전달되므로 공급자가 이 기능이 사용하려면 스트림으로 명령 입력을 지원해야 합니다. 예를 들어 SQL Server는 TRANSACT-SQL에 대한 XML 템플릿 또는 OpenXML 확장 형식의 쿼리를 지원합니다.

스트림의 세부 정보는 공급자가 해석해야 하므로 Dialect 속성을 설정하여 명령 언어를 지정해야 합니다. 언어 값은 공급자가 정의한 GUID를 포함하는 문자열입니다. 공급자가 지원하는 유효한 언어 값에 대한 자세한 내용은 공급자 설명서를 참조하세요.

XML 템플릿 쿼리 예제

다음 예제는 Northwind 데이터베이스에 VBScript로 작성됩니다.

먼저 쿼리 스트림을 포함하는 데 사용할 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