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 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