Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Ten przykład jest prawie taki sam jak przykład określający dyrektywę ELEMENTXSINIL. Jedyną różnicą jest to, że zapytanie określa dyrektywy ID i IDREF . Te dyrektywy zastępują typy atrybutu SalesPersonID w elementach <OrderHeader> i <OrderDetail> oraz tworzą odnośniki wewnątrz dokumentu. Potrzebujesz schematu, aby wyświetlić zastąpione typy. W związku z tym zapytanie określa opcję XMLDATA w klauzuli FOR XML w celu pobrania schematu.
USE AdventureWorks2022;
GO
SELECT 1 as Tag,
0 as Parent,
SalesOrderID as [OrderHeader!1!SalesOrderID!id],
OrderDate as [OrderHeader!1!OrderDate],
CustomerID as [OrderHeader!1!CustomerID],
NULL as [SalesPerson!2!SalesPersonID],
NULL as [OrderDetail!3!SalesOrderID!idref],
NULL as [OrderDetail!3!LineTotal],
NULL as [OrderDetail!3!ProductID],
NULL as [OrderDetail!3!OrderQty]
FROM Sales.SalesOrderHeader
WHERE SalesOrderID IN (43659, 43661)
UNION ALL
SELECT 2 as Tag,
1 as Parent,
SalesOrderID,
NULL,
NULL,
SalesPersonID,
NULL,
NULL,
NULL,
NULL
FROM Sales.SalesOrderHeader
WHERE SalesOrderID IN (43659, 43661)
UNION ALL
SELECT 3 as Tag,
1 as Parent,
SOD.SalesOrderID,
NULL,
NULL,
SalesPersonID,
SOH.SalesOrderID,
LineTotal,
ProductID,
OrderQty
FROM Sales.SalesOrderHeader SOH,
Sales.SalesOrderDetail SOD
WHERE SOH.SalesOrderID = SOD.SalesOrderID
AND (SOH.SalesOrderID=43659 or SOH.SalesOrderID=43661)
ORDER BY [OrderHeader!1!SalesOrderID!id],
[SalesPerson!2!SalesPersonID],
[OrderDetail!3!SalesOrderID!idref],
[OrderDetail!3!LineTotal]
FOR XML EXPLICIT, XMLDATA;
Jest to wynik częściowy. W schemacie dyrektywy ID i IDREF nadpisały typy danych atrybutu SalesOrderID w elementach <OrderHeader> i <OrderDetail> . Jeśli usuniesz te dyrektywy, schemat zwraca oryginalne typy tych atrybutów.
<Schema
name="Schema1"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="OrderHeader" content="mixed" model="open">
<AttributeType name="SalesOrderID" dt:type="id" />
<AttributeType name="OrderDate" dt:type="dateTime" />
<AttributeType name="CustomerID" dt:type="i4" />
<attribute type="SalesOrderID" />
<attribute type="OrderDate" />
<attribute type="CustomerID" />
</ElementType>
<ElementType name="SalesPerson" content="mixed" model="open">
<AttributeType name="SalesPersonID" dt:type="i4" />
<attribute type="SalesPersonID" />
</ElementType>
<ElementType name="OrderDetail" content="mixed" model="open">
<AttributeType name="SalesOrderID" dt:type="idref" />
<AttributeType name="LineTotal" dt:type="number" />
<AttributeType name="ProductID" dt:type="i4" />
<AttributeType name="OrderQty" dt:type="i2" />
<attribute type="SalesOrderID" />
<attribute type="LineTotal" />
<attribute type="ProductID" />
<attribute type="OrderQty" />
</ElementType>
</Schema>
<OrderHeader
xmlns="x-schema:#Schema1"
SalesOrderID="43659"
OrderDate="2001-07-01T00:00:00"
CustomerID="676">
<SalesPerson SalesPersonID="279" />
<OrderDetail
SalesOrderID="43659"
LineTotal="10.373000"
ProductID="712"
OrderQty="2" />
...
</OrderHeader>
...