Exemple : spécification de la directive ELEMENTXSINIL
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
Lorsque vous spécifiez la directive ELEMENT pour extraire un document XML centré sur l'élément et que la colonne possède une valeur NULL, l'élément correspondant n'est pas généré par le mode EXPLICIT. Vous pouvez éventuellement spécifier la directive ELEMENTXSINIL pour demander l'élément généré dans le cas des valeurs NULL dont l'attribut xsi:nil a pour valeur TRUE.
La requête suivante construit un document XML qui comprend une adresse d'employé. Pour les colonnes AddressLine2
et City
, les noms de colonnes spécifient la directive ELEMENTXSINIL
. Celle-ci génère l'élément pour les valeurs NULL des colonnes AddressLine2
et City
de l'ensemble de lignes.
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;
Voici le résultat partiel :
<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>
...