명령 스트림
ADO는 항상 CommandText 속성에 지정된 문자열 형식의 명령 입력을 지원합니다. 또는 ADO 2.7 이상을 사용하여 스트림을 CommandStream 속성에 할당하여 명령 입력에 대한 정보 스트림을 사용할 수도 있습니다. ADO Stream 개체 또는 COM IStream 인터페이스를 지원하는 모든 개체를 할당할 수 있습니다.
명령 스트림의 콘텐츠는 단순히 ADO에서 공급자로 전달되므로 공급자는 이 기능이 작동하려면 스트림별 명령 입력을 지원해야 합니다. 예를 들어 SQL Server는 Transact-SQL에 대한 XML 템플릿 또는 OpenXML 확장 형식의 쿼리를 지원합니다.
스트림의 세부 정보는 공급자가 해석해야 하므로 언어 속성을 설정하여 명령 방언을 지정해야 합니다. 방언 값은 공급자가 정의한 GUID를 포함하는 문자열입니다. 공급자가 지원하는 언어 유효한 값에 대한 자세한 내용은 공급자 설명서를 참조하세요.
XML 템플릿 쿼리 예제
다음 예제는 Northwind 데이터베이스에 VBScript로 작성됩니다.
먼저 쿼리 스트림을 포함하는 데 사용할 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
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