Partager via


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ésapprouvé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 Utilisation du mode RAW.

  • 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 Utilisation du mode AUTO.

  • 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 Utilisation du mode EXPLICIT.

  • 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 Utilisation du mode PATH.

  • 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 Utilisation du mode RAW.

  • 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ération de schéma XSD en ligne. Pour obtenir un exemple fonctionnel, consultez Utilisation du mode RAW.

  • 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 Utilisation du mode RAW et Utilisation du mode AUTO.

  • 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 codé 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 Utilisation du mode RAW.

  • 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 ».