Syntaxe de base de la clause FOR XML
Le mode de la clause FOR XML peut être RAW, AUTO, EXPLICIT ou PATH. Il détermine la forme du code XML résultant.
Important
La directive XMLDATA de l'option FOR XML est déconseillée. Utilisez la génération XSD en mode RAW et AUTO. Il n'existe aucune solution de remplacement pour la directive XMLDATA en mode EXPLICIT. Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
Voici la syntaxe de base telle qu'elle est décrite dans Clause FOR (Transact-SQL) :
[ FOR { BROWSE | <XML> } ]
<XML> ::=
XML
{
{ RAW [ ('ElementName') ] | AUTO }
[
<CommonDirectives>
[ , { XMLDATA | XMLSCHEMA [ ('TargetNameSpaceURI') ]} ]
[ , ELEMENTS [ XSINIL | ABSENT ]
]
| EXPLICIT
[
<CommonDirectives>
[ , XMLDATA ]
]
| PATH [ ('ElementName') ]
[
<CommonDirectives>
[ , ELEMENTS [ XSINIL | ABSENT ] ]
]
}
<CommonDirectives> ::=
[ , BINARY BASE64 ]
[ , TYPE ]
[ , ROOT [ ('RootName') ] ]
Arguments
RAW[('ElementName')]
Prend le résultat de la requête et transforme chaque ligne du jeu de résultats en un élément XML comportant un identificateur générique <row /> comme balise d'élément. Vous pouvez, si vous le souhaitez, spécifier un nom pour l'élément de ligne en cas d'utilisation de cette directive. Le code XML qui en résulte utilisera l'ElementName spécifié pour identifier l'élément de ligne généré pour chaque ligne. Pour plus d'informations, consultez Utiliser le mode RAW avec FOR XML.AUTO
Renvoie les résultats de la requête dans une arborescence XML simple et imbriquée. Chaque table dans la clause FROM pour laquelle au moins une colonne existe dans la clause SELECT est représentée comme un élément XML. Les colonnes listées dans la clause SELECT sont mappées vers les attributs d'éléments appropriés. Pour plus d'informations, consultez UTiliser le mode AUTO avec FOR XML.EXPLICIT
Spécifie que la forme de l'arborescence XML résultante est définie de manière explicite. Dans ce mode, les requêtes doivent être écrites d'une manière particulière afin que des informations complémentaires sur l'imbrication souhaitée soient spécifiées de manière explicite. Pour plus d'informations, consultez Utiliser le mode EXPLICIT avec FOR XML.PATH
Constitue un moyen simple de mélanger les éléments et les attributs, et d'introduire des imbrications supplémentaires pour représenter des propriétés complexes. Vous pouvez utiliser des requêtes FOR XML en mode EXPLICIT pour construire cette sorte de XML à partir d'un ensemble de lignes, mais le mode PATH est une alternative plus simple aux requêtes en mode EXPLICIT souvent beaucoup plus lourdes à manier. Le mode PATH, allié à la possibilité d'écrire des requêtes FOR XML imbriquées et de faire appel à la directive TYPE pour renvoyer les instances de type xml, vous permet d'écrire des requêtes de moindre complexité. Il offre une alternative à l'écriture de la plupart des requêtes en mode EXPLICIT. Par défaut, le mode PATH génère un wrapper d'élément <row> pour chaque ligne du jeu de résultats. Vous pouvez, si vous le souhaitez, spécifier un nom d'élément. Si telle est votre intention, le nom spécifié est utilisé comme nom d'élément du wrapper. Si vous fournissez une chaîne vide (FOR XML PATH ('')), aucun élément wrapper n'est généré. Pour plus d'informations, consultez Utiliser le mode PATH avec FOR XML.XMLDATA
Indique qu'un schéma XDR (XML-Data Reduced) doit être renvoyé. Le schéma est ajouté au début du document sous la forme d'un schéma en ligne. Pour obtenir un exemple fonctionnel, consultez Utiliser le mode RAW avec FOR XML.XMLSCHEMA
Renvoie un schéma XML W3C (XSD) en ligne. Vous pouvez, si vous le souhaitez, spécifier un URI d'espace de noms cible en cas d'utilisation de cette directive de façon à ce que l'espace de noms spécifié soit renvoyé dans le schéma. Pour plus d'informations, consultez Générer un schéma XSD en ligne. Pour obtenir un exemple fonctionnel, consultez Utiliser le mode RAW avec FOR XML.ELEMENTS
Si l'option ELEMENTS est spécifiée, les colonnes sont renvoyées sous forme de sous-éléments. Sinon, elles sont mappées avec des attributs XML. Cette option n'est prise en charge que dans les modes RAW, AUTO et PATH. Vous pouvez, si vous le souhaitez, spécifier XSINIL ou ABSENT en cas d'utilisation de cette directive. XSINIL spécifie qu'un élément qui a un attribut xsi:nil défini à True soit créé pour les valeurs de colonne NULL. Par défaut, ou lorsque ABSENT est spécifié avec ELEMENTS, aucun élément n'est créé pour des valeurs NULL. Pour obtenir un exemple fonctionnel, consultez Utiliser le mode RAW avec FOR XML et UTiliser le mode AUTO avec FOR XML.BINARY BASE64
Si l'option BINARY Base64 est spécifiée, toutes les données binaires renvoyées par la requête sont représentées dans un format encodé en base 64. Cette option doit être spécifiée pour l'extraction de données binaires en mode RAW et EXPLICIT. En mode AUTO, des données binaires sont renvoyées comme une référence par défaut. Pour obtenir un exemple fonctionnel, consultez Utiliser le mode RAW avec FOR XML.TYPE
Spécifie que la requête renvoie les résultats sous le type xml. Pour plus d'informations, consultez Directive TYPE dans les requêtes FOR XML.ROOT [('RootName')]
Spécifie qu'un et un seul élément de premier niveau doit être ajouté au code XML résultant. Vous pouvez, si vous le souhaitez, spécifier le nom d'élément racine à générer. La valeur par défaut est « root ».
Voir aussi
Référence
Utiliser le mode RAW avec FOR XML
UTiliser le mode AUTO avec FOR XML
Utiliser le mode EXPLICIT avec FOR XML