Partager via


Noms de colonnes avec le chemin d’accès spécifié en tant que données()

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Si le chemin d’accès spécifié comme nom de colonne est data(), la valeur est traitée comme une valeur atomique dans le code XML généré. Un espace est ajouté au document XML si l'élément suivant dans la sérialisation est également une valeur atomique. Cela est utile lorsque vous créez des valeurs d’élément et d’attribut typés de liste. La requête suivante extrait l'ID de modèle, le nom et la liste des produits pour le modèle concerné.

USE AdventureWorks2022;
GO
SELECT ProductModelID       AS "@ProductModelID",
       Name                 AS "@ProductModelName",
      (SELECT ProductID AS "data()"
       FROM   Production.Product
       WHERE  Production.Product.ProductModelID =
              Production.ProductModel.ProductModelID
      FOR XML PATH (''))    AS "@ProductIDs"
FROM  Production.ProductModel
WHERE ProductModelID = 7
FOR XML PATH('ProductModelData');

L'instruction SELECT imbriquée extrait une liste d'ID de produit. Elle spécifie « data() » comme nom de colonne pour les ID de produit. Étant donné que le mode PATH spécifie une chaîne vide pour le nom de l’élément de ligne, aucun élément de ligne n’est généré. À la place, les valeurs sont renvoyées comme étant affectées à un attribut ProductIDs de l’élément de ligne <ProductModelData> de l’instruction SELECT parente. Voici le résultat obtenu :

<ProductModelData
  ProductModelID = "7"
  ProductModelName="HL Touring Frame"
  ProductIDs="885 887 888 889 890 891 892 893"
/>

Voir aussi