Поделиться через


Имена столбцов с путем, указанным как data()

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

Если путь, указанный в качестве имени data()столбца, то значение рассматривается как атомарное значение в созданном XML. Если следующий элемент последовательности также является элементарным значением, в XML-документ добавляется символ пробела. Это полезно при создании типизированного элемента списка и значений атрибутов. Следующий запрос извлекает код модели продукции, ее имя и список продуктов этой модели.

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

Вложенная инструкция SELECT извлекает список кодов продуктов. Имя столбца для кодов продуктов в нем указано как «data()». Так как режим PATH задает пустую строку для имени элемента строки, не создается элемент строки. Вместо этого возвращаются значения, назначенные атрибуту ProductIDs элемента строки <ProductModelData> в родительской инструкции SELECT. Результат:

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

См. также