Fluxos de comando
O ADO sempre deu suporte à entrada de comando no formato de cadeia de caracteres especificado pela propriedade CommandText. Como alternativa, com o ADO 2.7 ou posterior, você também pode usar um fluxo de informações para entrada de comando atribuindo o fluxo à propriedade CommandStream. Você pode atribuir um objeto ADO Stream ou qualquer objeto que suporte a interface COM IStream.
O conteúdo do fluxo de comandos é simplesmente passado do ADO para o provedor, portanto, seu provedor deve dar suporte à entrada de comando por fluxo para que esse recurso funcione. Por exemplo, o SQL Server dá suporte a consultas na forma de modelos XML ou extensões OpenXML para Transact-SQL.
Como os detalhes do fluxo devem ser interpretados pelo provedor, você deve especificar o dialeto de comando definindo a propriedade Dialeto. O valor de Dialeto é uma cadeia de caracteres que contém um GUID, que é definido pelo seu provedor. Para obter informações sobre valores válidos para Dialeto com suporte do provedor, consulte a documentação do provedor.
Exemplo de consulta de modelo XML
O exemplo a seguir é escrito em VBScript no banco de dados Northwind.
Primeiro, inicialize e abra o objeto Stream que será usado para conter o fluxo de consulta:
Dim adoStreamQuery
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")
adoStreamQuery.Open
O conteúdo do fluxo de consulta será uma consulta de modelo XML.
A consulta modelo requer uma referência ao namespace XML identificado pelo prefixo sql: da marca <sql:query>. Uma instrução SQL SELECT é incluída como o conteúdo do modelo XML e atribuída a uma variável de cadeia de caracteres da seguinte maneira:
sQuery = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<sql:query> SELECT * FROM PRODUCTS ORDER BY PRODUCTNAME </sql:query>
</ROOT>"
Em seguida, escreva a cadeia de caracteres no fluxo:
adoStreamQuery.WriteText sQuery, adWriteChar
adoStreamQuery.Position = 0
Atribua adoStreamQuery à propriedade CommandStream de um objeto Command do ADO.
Dim adoCmd
Set adoCmd = Server.CreateObject("ADODB.Command"")
adoCmd.CommandStream = adoStreamQuery
Especifique a linguagem de comando Dialeto, que indica como o Provedor OLE DB do SQL Server deve interpretar o fluxo de comandos. O dialeto especificado por um GUID fornecido por um provedor:
adoCmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"
Por fim, execute a consulta e retorne os resultados para um objeto Recordset:
Set objRS = adoCmd.Execute