Flux de commandes
ADO a toujours pris en charge l’entrée de commande au format de chaîne spécifié par la propriété CommandText. En guise d’alternative, avec ADO 2.7 ou version ultérieure, vous pouvez également utiliser un flux d’informations pour l’entrée de commande en affectant le flux à la propriété CommandStream. Vous pouvez affecter un objet Stream ADO ou tout objet qui prend en charge l’interface IStream COM.
Le contenu du flux de commandes est simplement passé d’ADO à votre fournisseur. Votre fournisseur doit donc prendre en charge l’entrée de commande par flux pour que cette fonctionnalité fonctionne. Par exemple, SQL Server prend en charge les requêtes sous la forme de modèles XML ou d’extensions OpenXML pour Transact-SQL.
Étant donné que les détails du flux doivent être interprétés par le fournisseur, vous devez spécifier le dialecte de commande en définissant la propriété Dialect. La valeur de Dialecte est une chaîne contenant un GUID, qui est déterminé par votre fournisseur. Pour plus d’informations sur les valeurs valides pour dialecte pris en charge par votre fournisseur, consultez la documentation de votre fournisseur.
Exemple de requête de modèle XML
L’exemple suivant est écrit en VBScript dans la base de données Northwind.
Tout d’abord, initialisez et ouvrez l’objet Stream qui sera utilisé pour contenir le flux de requête :
Dim adoStreamQuery
Set adoStreamQuery = Server.CreateObject("ADODB.Stream")
adoStreamQuery.Open
Le contenu du flux de requête sera une requête de modèle XML.
La requête de modèle requiert une référence à l’espace de noms XML identifié par le préfixe sql: de la balise <sql:query>. Une instruction SQL SELECT est incluse comme contenu du modèle XML et affectée à une variable de chaîne comme suit :
sQuery = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<sql:query> SELECT * FROM PRODUCTS ORDER BY PRODUCTNAME </sql:query>
</ROOT>"
Ensuite, écrivez la chaîne dans le flux :
adoStreamQuery.WriteText sQuery, adWriteChar
adoStreamQuery.Position = 0
Affectez adoStreamQuery à la propriété CommandStream d’un objet ADO Command :
Dim adoCmd
Set adoCmd = Server.CreateObject("ADODB.Command"")
adoCmd.CommandStream = adoStreamQuery
Spécifiez le langage de commande dialecte, qui indique comment le fournisseur OLE DB SQL Server doit interpréter le flux de commandes. Dialecte spécifié par un GUID spécifique au fournisseur :
adoCmd.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}"
Enfin, exécutez la requête et renvoyez les résultats à un objet Recordset :
Set objRS = adoCmd.Execute