Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Az elem attribútum megadható ID típusú attribútumként, és az IDREFS attribútummal hivatkozhat rá. Ez lehetővé teszi a dokumentumon belüli csatolásokat, és hasonló a relációs adatbázisok elsődleges kulcs- és idegenkulcs-kapcsolataihoz.
Ez a példa bemutatja, hogyan használhatók az id - és IDREFS-irányelvekaz ID és IDREFS típusú attribútumok létrehozására. Mivel az azonosítók nem lehetnek egész számok, a példában szereplő azonosítóértékek konvertálódnak. Más szóval, típusra alakítva vannak. Az azonosító értékekhez előtagok használhatók.
Tegyük fel, hogy xml-t szeretne létrehozni az alábbiak szerint:
<Customer CustomerID="C1" SalesOrderIDList=" O11 O22 O33..." >
<SalesOrder SalesOrderID="O11" OrderDate="..." />
<SalesOrder SalesOrderID="O22" OrderDate="..." />
<SalesOrder SalesOrderID="O33" OrderDate="..." />
...
</Customer>
Az SalesOrderIDList elem attribútuma <Customer> egy többértékű attribútum, amely az SalesOrderID elem attribútumára <SalesOrder> hivatkozik. A hivatkozás létrehozásához az SalesOrderID attribútumot típusként ID kell deklarálni, és az SalesOrderIDList<Customer> elem attribútumát típusként IDREFS kell deklarálni. Mivel egy ügyfél több megrendelést is kérhet, a rendszer ezt a IDREFS típust használja.
Az IDREFS típusú elemek több értékkel is rendelkeznek. Ezért egy külön kiválasztási záradékot kell használnia, amely ugyanazokat a címke-, szülő- és kulcsoszlop-információkat fogja újra felhasználni. Ezután ORDER BY gondoskodnia kell arról, hogy az IDREFS-értékeket alkotó sorok sorozata csoportosítva jelenjen meg a szülőelem alatt.
Ez a lekérdezés állítja elő a kívánt XML-fájlt. A lekérdezés a ID és IDREFS direktívák használatával írja felül a típusokat az oszlopnevekben (SalesOrder!2!SalesOrderID!ID, Customer!1!SalesOrderIDList!IDREFS).
USE AdventureWorks2022;
GO
SELECT 1 as Tag,
0 as Parent,
C.CustomerID [Customer!1!CustomerID],
NULL [Customer!1!SalesOrderIDList!IDREFS],
NULL [SalesOrder!2!SalesOrderID!ID],
NULL [SalesOrder!2!OrderDate]
FROM Sales.Customer C
UNION ALL
SELECT 1 as Tag,
0 as Parent,
C.CustomerID,
'O-'+CAST(SalesOrderID as varchar(10)),
NULL,
NULL
FROM Sales.Customer AS C
INNER JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
UNION ALL
SELECT 2 as Tag,
1 as Parent,
C.CustomerID,
NULL,
'O-'+CAST(SalesOrderID as varchar(10)),
OrderDate
FROM Sales.Customer AS C
INNER JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
ORDER BY [Customer!1!CustomerID] ,
[SalesOrder!2!SalesOrderID!ID],
[Customer!1!SalesOrderIDList!IDREFS]
FOR XML EXPLICIT;