Construction de code XML à l'aide de FOR XML

Une requête SELECT retourne les résultats sous la forme d'un ensemble de lignes. Vous pouvez si vous le souhaitez récupérer les résultats d'une requête SQL sous forme de code XML en spécifiant la clause FOR XML dans la requête. Dans une clause FOR XML, vous spécifiez l'un des modes suivants :

  • RAW
  • AUTO
  • EXPLICIT
  • PATH

Le mode RAW génère un seul élément <row> par ligne dans l'ensemble de lignes qui est retourné par l'instruction SELECT. Vous pouvez générer une hiérarchie XML en écrivant des requêtes FOR XML imbriquées.

Le mode AUTO génère l'imbrication dans le code XML résultant en utilisant une heuristique basée sur la manière dont l'instruction SELECT est spécifiée. Vous n'avez qu'un contrôle minimal sur la forme du code XML généré. Les requêtes FOR XML imbriquées peuvent être écrites de façon à générer une hiérarchie XML au-delà de la forme XML générée par l'heuristique du mode AUTO.

Le mode EXPLICIT permet de contrôler davantage la forme du code XML. Vous pouvez combiner des attributs et des éléments à volonté afin de décider de la forme du code XML. Un format spécifique est nécessaire pour l'ensemble de lignes généré suite à l'exécution de requête. Le format d'ensemble de lignes est ensuite mappé au format XML. L'avantage du mode EXPLICIT est qu'il permet de combiner des attributs et des éléments à volonté, de créer des wrappers et des propriétés complexes imbriquées et de créer des valeurs séparées par des espaces (par exemple, l'attribut OrderID peut avoir une liste d'ID d'ordre) ainsi que du contenu mixte.

Toutefois, l'écriture de requêtes en mode EXPLICIT peut être une opération pénible. Vous pouvez utiliser certaines des nouvelles fonctionnalités FOR XML, telles que l'écriture de requêtes FOR XML en mode RAW/AUTO/PATH et la directive TYPE, au lieu d'utiliser le mode EXPLICIT pour générer les hiérarchies. Les requêtes FOR XML imbriquées peuvent produire tout code XML que vous générez à l'aide du mode EXPLICIT. Pour plus d'informations, consultez Requêtes FOR XML imbriquées et Directive TYPE dans les requêtes FOR XML.

Le mode PATH, associé à la capacité des requêtes FOR XML imbriquées, offre la flexibilité du mode EXPLICIT sous une forme plus simple.

Ces modes ne s'appliquent qu'aux requêtes pour lesquelles ils sont définis. Ils n'affectent pas les résultats des requêtes suivantes.

Voir aussi

Référence

Syntaxe de base de la clause FOR XML
Recommandations pour l'utilisation de la clause FOR XML
Utilisation du mode RAW
Utilisation du mode AUTO
Utilisation du mode EXPLICIT
Nouvelles fonctionnalités de FOR XML
Interrogation de données XML à l'aide de OPENXML
Utilisation de FOR XML et OPENXML pour publier et traiter des données XML

Concepts

Utilisation du mode PATH
Exemples d'applications XML
Ajout d'espaces de noms à l'aide de WITH XMLNAMESPACES

Aide et Informations

Assistance sur SQL Server 2005