Partager via


Noms de colonnes avec le chemin spécifié comme data()

Si le chemin 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 caractère d’espace est ajouté au code XML si l’élément suivant de 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 récupère l’ID, le nom et la liste des produits de ce modèle de produit.

USE AdventureWorks2012;  
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');  

Le SELECT imbriqué récupère une liste d’ID de produit. Il 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é. Au lieu de cela, les valeurs sont retournées comme affectées à un attribut ProductIDs de l’élément <ProductModelData> de ligne du SELECT parent. Voici le résultat obtenu :

<ProductModelData ProductModelID="7"

ProductModelName="HL Touring Frame"

ProductIDs="885 887 888 889 890 891 892 893" />

Voir aussi

Utiliser le mode PATH avec FOR XML