次の方法で共有


パスを data() として指定した列の名前

列名として指定したパスが "data()" の場合、生成される XML では列の値がアトミック値として処理されます。シリアル化時の後続アイテムもアトミック値である場合は、空白文字が XML に追加されます。これはリスト状の要素値または属性値を作成する場合に有用です。次のクエリでは、製品モデルの ID および名前と、そのモデルに含まれる製品のリストを取得します。

USE AdventureWorks2008R2;
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 では、製品 ID のリストを取得しています。製品 ID の列名が "data()" と指定されています。PATH モードでは空文字列が行の要素名に指定されるので、ここでは行要素は生成されません。代わりに、親の SELECT で指定した <ProductModelData> 行要素の ProductIDs 属性に設定された値が返されます。次に結果を示します。

<ProductModelData ProductModelID="7"

ProductModelName="HL Touring Frame"

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

関連項目

概念