Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird der Unterschied zwischen den ELEMENT- und XML-Direktiven veranschaulicht. Die ELEMENT-Direktive entitisiert die Daten, aber die XML-Direktive nicht. Der <Summary>-Element wird XML, <Summary>This is summary description</Summary>, in der Abfrage zugeordnet.
Angenommen, die folgende Abfrage wird ausgeführt:
USE AdventureWorks2012;
GO
SELECT 1 as Tag,
0 as Parent,
ProductModelID as [ProductModel!1!ProdModelID],
Name as [ProductModel!1!Name],
NULL as [Summary!2!SummaryDescription!ELEMENT]
FROM Production.ProductModel
WHERE ProductModelID=19
UNION ALL
SELECT 2 as Tag,
1 as Parent,
ProductModelID,
NULL,
'<Summary>This is summary description</Summary>'
FROM Production.ProductModel
WHERE ProductModelID=19
FOR XML EXPLICIT
Dies ist das Ergebnis. Die Zusammenfassungsbeschreibung wird im Ergebnis als eine Einheit behandelt.
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription><Summary>This is summary description</Summary></SummaryDescription>
</Summary>
</ProductModel>
Wenn Sie nun die XML-Direktive im Spaltennamen angeben, Summary!2!SummaryDescription!XMLerhalten Sie anstelle der ELEMENT-Direktive die Zusammenfassungsbeschreibung ohne Entitisierung.
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<Summary>This is summary description</Summary>
</SummaryDescription>
</Summary>
</ProductModel>
Anstatt einen statischen XML-Wert zuzuweisen, verwendet die folgende Abfrage die Query() -Methode des XML-Typs , um die Beschreibung der Produktmodellzusammenfassung aus der Spalte "CatalogDescription" des XML-Typs abzurufen. Da das Ergebnis als XML-Typ bekannt ist, wird keine Entitisierung angewendet.
SELECT 1 as Tag,
0 as Parent,
ProductModelID as [ProductModel!1!ProdModelID],
Name as [ProductModel!1!Name],
NULL as [Summary!2!SummaryDescription]
FROM Production.ProductModel
WHERE CatalogDescription is not null
UNION ALL
SELECT 2 as Tag,
1 as Parent,
ProductModelID,
Name,
(SELECT CatalogDescription.query('
declare namespace pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/pd:ProductDescription/pd:Summary'))
FROM Production.ProductModel
WHERE CatalogDescription is not null
ORDER BY [ProductModel!1!ProdModelID],Tag
FOR XML EXPLICIT