Secuencias de comandos
ADO siempre ha admitido la entrada de comandos en formato de cadena especificado por la propiedad CommandText. Como alternativa, con ADO 2.7 o posterior, también puede usar una secuencia de información para la entrada de comandos asignando la secuencia a la propiedad CommandStream. Puede asignar un objeto Stream de ADO , o cualquier objeto que admita la interfaz COM IStream.
El contenido de la secuencia de comandos simplemente se pasa de ADO al proveedor, por lo que el proveedor debe admitir la entrada de comandos por secuencia para que esta característica funcione. Por ejemplo, SQL Server admite consultas en forma de plantillas XML o extensiones OpenXML en Transact-SQL.
Dado que el proveedor debe interpretar los detalles de la secuencia, debe especificar el dialecto de los comandos estableciendo la propiedad Dialect. El valor de Dialecto es una cadena que contiene un GUID, el cual está definido por su proveedor. Para obtener información sobre los valores válidos para dialecto compatibles con el proveedor, consulte la documentación del proveedor.
Ejemplo de consulta de plantilla XML
El ejemplo siguiente se escribe en VBScript en la base de datos Northwind.
En primer lugar, inicialice y abra el objeto Stream que se usará para contener el flujo de consulta:
Dim adoStreamQuery
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")
adoStreamQuery.Open
El contenido del flujo de consulta será una consulta de plantilla XML.
La consulta de plantilla requiere una referencia al espacio de nombres XML identificado por el prefijo sql: de la etiqueta <sql:query>. Una instrucción SELECT de SQL se incluye como el contenido de la plantilla XML y se asigna a una variable de cadena de la siguiente manera:
sQuery = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<sql:query> SELECT * FROM PRODUCTS ORDER BY PRODUCTNAME </sql:query>
</ROOT>"
A continuación, escriba la cadena en el flujo.
adoStreamQuery.WriteText sQuery, adWriteChar
adoStreamQuery.Position = 0
Asigne adoStreamQuery a la propiedad CommandStream de un objeto Command ADO:
Dim adoCmd
Set adoCmd = Server.CreateObject("ADODB.Command"")
adoCmd.CommandStream = adoStreamQuery
Especifique el lenguaje de comandos dialecto, que indica cómo el proveedor OLE DB de SQL Server debe interpretar la secuencia de comandos. El dialecto especificado por un GUID específico del proveedor:
adoCmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"
Por último, ejecute la consulta y devuelva los resultados a un objeto Recordset de :
Set objRS = adoCmd.Execute