例 : ELEMENTXSINIL ディレクティブの指定
ELEMENT ディレクティブを指定して要素中心の XML を生成する際、列に NULL 値が格納されていると、EXPLICIT モードでは対応する要素が生成されません。必要に応じて ELEMENTXSINIL ディレクティブを指定し、NULL 値の列に対して要素を生成するように要求することができます。このとき、xsi:nil 属性に値 TRUE が設定されます。
次のクエリは、従業員の住所を含む XML を生成します。AddressLine2 列と City 列には、列名に ELEMENTXSINIL ディレクティブが指定されています。この設定により、NULL 値が格納されている AddressLine2 列と City 列に対して行セットに要素が生成されます。
SELECT 1 as Tag,
NULL as Parent,
EmployeeID as [Employee!1!EmpID],
E.AddressID as [Employee!1!AddressID],
NULL as [Address!2!AddressID],
NULL as [Address!2!AddressLine1!ELEMENT],
NULL as [Address!2!AddressLine2!ELEMENTXSINIL],
NULL as [Address!2!City!ELEMENTXSINIL]
FROM HumanResources.EmployeeAddress E, Person.Address A
WHERE E.ContactID = A.ContactID
UNION ALL
SELECT 2 as Tag,
1 as Parent,
EmployeeID,
E.AddressID,
A.AddressID,
AddressLine1,
AddressLine2,
City
FROM HumanResources.EmployeeAddress E, Person.Address A
WHERE E.AddressID = A.AddressID
ORDER BY [Employee!1!EmpID],[Address!2!AddressID]
FOR XML EXPLICIT
結果の一部を次に示します。
<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
EmpID="1" AddressID="61">
<Address AddressID="61">
<AddressLine1>7726 Driftwood Drive</AddressLine1>
<AddressLine2 xsi:nil="true" />
<City>Monroe</City>
</Address>
</Employee>
...