Udostępnij za pomocą


Przykład: określ dyrektywę ELEMENTXSINIL

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Po określeniu dyrektywy ELEMENT w celu pobrania XML zorientowanego na elementy, jeśli kolumna ma wartość NULL, odpowiedni element nie jest generowany przez tryb EXPLICIT. Opcjonalnie można określić dyrektywę ELEMENTXSINIL, aby zażądać elementu generowania wartości NULL, gdzie atrybut xsi:nil jest ustawiony z wartością TRUE.

Poniższe zapytanie konstruuje kod XML zawierający adres pracownika. "Nazwy kolumn AddressLine2 i City określają dyrektywę ELEMENTXSINIL." To spowoduje wygenerowanie elementu dla wartości NULL w kolumnach AddressLine2 i City w zbiorze wierszy.

USE AdventureWorks2022;
GO
SELECT 1    as Tag,
       NULL as Parent,
       E.BusinessEntityID  as [Employee!1!EmpID],
       BEA.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.Employee AS E
INNER JOIN Person.BusinessEntityAddress AS BEA
    ON E.BusinessEntityID = BEA.BusinessEntityID

UNION ALL
SELECT 2 as Tag,
       1 as Parent,
       E.BusinessEntityID,
       BEA.AddressID,
       A.AddressID,
       AddressLine1,
       AddressLine2,
       City
FROM   HumanResources.Employee AS E
INNER JOIN Person.BusinessEntityAddress AS BEA
    ON E.BusinessEntityID = BEA.BusinessEntityID
INNER JOIN Person.Address AS A
    ON BEA.AddressID = A.AddressID
ORDER BY [Employee!1!EmpID],[Address!2!AddressID]
FOR XML EXPLICIT;

Jest to wynik częściowy:

<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          EmpID="1"
          AddressID="249">
  <Address AddressID="249">
    <AddressLine1>4350 Minute Dr.</AddressLine1>
    <AddressLine2 xsi:nil="true" />
    <City>Minneapolis</City>
  </Address>
</Employee>
...

Zobacz także