Nombres de columna con la ruta de acceso especificada como data()
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Si la ruta de acceso especificada como nombre de columna es data()
, el valor se trata como un valor atómico en el XML generado. Si el siguiente elemento de la serialización también es un valor atómico, se agregará un carácter de espacio al XML. Esto resulta útil al crear valores de atributo y elemento con tipo de lista. La consulta siguiente recupera el Id. del modelo de producto, el nombre del producto y una lista de los productos de ese modelo.
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');
La instrucción SELECT anidada recupera una lista de Id. de productos. Especificará "data()" como nombre de columna de los Id. de productos. Dado que el modo PATH especifica una cadena vacía para el nombre del elemento de fila, no se genera ningún elemento de fila. En su lugar, se devolverán los valores como asignados a un atributo ProductIDs del elemento de fila <ProductModelData>
de la instrucción SELECT primaria. El resultado es el siguiente:
<ProductModelData
ProductModelID = "7"
ProductModelName="HL Touring Frame"
ProductIDs="885 887 888 889 890 891 892 893"
/>