Compartilhar via


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 dê suporte à interface COM IStream.

O conteúdo do fluxo de comandos é simplesmente passado do ADO para o provedor, ou seja, seu provedor precisa 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 precisam ser interpretados pelo provedor, você precisa especificar o dialeto de comando definindo a propriedade Dialect. O valor de Dialect é uma cadeia de caracteres que contém um GUID, que é definido pelo provedor. Para saber mais sobre valores válidos de Dialect com suporte do provedor, confira a documentação do provedor.

Exemplo de consulta de modelo XML

O exemplo a seguir foi 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 de 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 o Dialect da linguagem de comando, que indica como o provedor OLE DB SQL Server deve interpretar o fluxo de comando. O dialeto especificado por um GUID específico do 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