Compartir vía


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 un flujo 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 IStream COM.

El contenido de la secuencia de comandos simplemente se pasa de ADO a su 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 del comando estableciendo la propiedad Dialect. El valor de Dialect es una cadena que contiene un GUID, definido por el proveedor. Para obtener información sobre los valores válidos de Dialect compatibles con su 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 sql: prefijo 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 la secuencia.

adoStreamQuery.WriteText sQuery, adWriteChar  
adoStreamQuery.Position = 0  

Asigne adoStreamQuery a la propiedad CommandStream de un objeto Command de ADO:

Dim adoCmd  
Set adoCmd  = Server.CreateObject("ADODB.Command"")  
adoCmd.CommandStream = adoStreamQuery  

Especifique el dialecto del lenguaje de comandos, que indica cómo el proveedor OLE DB de SQL Server debe interpretar la secuencia de comandos. 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:

Set objRS = adoCmd.Execute