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
A SELECT lekérdezés sorhalmazként adja vissza az eredményeket. Az SQL-lekérdezések formális eredményeit xml-fájlként is lekérheti a FOR XML lekérdezés záradékának megadásával. A FOR XML záradék a legfelső szintű lekérdezésekben és az al lekérdezésekben is használható. A legfelső szintű FOR XML záradék csak az SELECT utasításban használható. Az albekérdezésekben FOR XML a , INSERTés UPDATE az DELETEutasítások használhatók.
FOR XML a hozzárendelési utasításokban is használható.
FOR XML Egy záradékban az alábbi módok egyikét adja meg:
RAWAUTOEXPLICITPATH
A RAW mód soronként egyetlen <row> elemet hoz létre az utasítás által SELECT visszaadott sorhalmazban. Xml-hierarchiát beágyazott FOR XML lekérdezések írásával hozhat létre.
A AUTO mód heurisztikus heurisztika használatával hozza létre a beágyazást az eredményként kapott XML-ben az SELECT utasítás megadása alapján. Minimálisan szabályozhatja a létrehozott XML alakját. A beágyazott FOR XML lekérdezések megírhatók úgy, hogy az XML-hierarchiát a mód heurisztika által AUTO létrehozott XML-alakzaton túl is létrehozhassa.
A EXPLICIT mód lehetővé teszi az XML alakjának további szabályozását. Az XML alakjának meghatározásához az attribútumokat és az elemeket egyszerre kombinálhatja. Egy adott formátumot igényel a lekérdezés végrehajtása miatt létrehozott eredménysorkészlethez. Ez a sorhalmaz-formátum ezután XML-alakzatra van leképezve. A módnak az a feladata EXPLICIT , hogy egyszerre kombinálja az attribútumokat és az elemeket, burkolókat és beágyazott összetett tulajdonságokat hozzon létre, szóközzel elválasztott értékeket hozzon létre (például az OrderID attribútumban szerepelhet a rendelésazonosító értékeinek listája) és a vegyes tartalom.
A módú lekérdezések írása EXPLICIT azonban nehézkes lehet. A hierarchia létrehozása helyett FOR XML használhat néhány új FOR XML RAW képességet, például beágyazott AUTOvagy PATHTYPE módú lekérdezések írását és az EXPLICIT irányelvet. A beágyazott FOR XML lekérdezések bármilyen XML-t létrehozhatnak, amelyet a EXPLICIT mód használatával hozhat létre. További információkért lásd: Beágyazott XML-lekérdezések és TÍPUSirányelvet használata AZ XML-lekérdezésekben.
A PATH mód és a beágyazott FOR XML lekérdezési funkció egyszerűbbé teszi a EXPLICIT mód rugalmasságát.
Ezek a módok csak annak a lekérdezésnek a végrehajtására vannak érvényben, amelyhez be vannak állítva. Ezek nem befolyásolják a későbbi lekérdezések eredményeit.
FOR XML nem érvényes olyan kijelölésre, amelyet záradékkal FOR BROWSE használnak.
Példák
Az alábbi SELECT utasítás az adatbázis és Sales.Customer a Sales.SalesOrderHeaderAdventureWorks2025 táblák adatait kéri le. Ez a lekérdezés a AUTO záradékban szereplő FOR XML módot adja meg:
USE AdventureWorks2022;
GO
SELECT Cust.CustomerID,
OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.STATUS
FROM Sales.Customer Cust
INNER JOIN Sales.SalesOrderHeader OrderHeader
ON Cust.CustomerID = OrderHeader.CustomerID
FOR XML AUTO;
A FOR XML záradék és a kiszolgálónevek
Ha egy SELECTFOR XML záradékkal ellátott utasítás négyrészes nevet ad meg a lekérdezésben, a kiszolgáló neve nem jelenik meg az eredményül kapott XML-dokumentumban, amikor a lekérdezést a helyi számítógépen hajtják végre. A kiszolgáló neve azonban négyrészes névként lesz visszaadva, amikor a lekérdezést egy hálózati kiszolgálón hajtják végre.
Vegyük például ezt a lekérdezést:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2022.Person.Person
FOR XML AUTO;
Helyi kiszolgáló: Helyi kiszolgáló esetén ServerName a lekérdezés a következő szöveget adja vissza:
<AdventureWorks2022.Person.Person LastName="Achong" />
Hálózati kiszolgáló: Hálózati kiszolgáló esetén ServerName a lekérdezés a következő szöveget adja vissza:
<ServerName.AdventureWorks2022.Person.Person LastName="Achong" />
A kétértelműség elkerülése: Ez a lehetséges kétértelműség elkerülhető az alias megadásával:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2022.Person.Person x
FOR XML AUTO;
Most a egyértelmű lekérdezés a következő szöveget adja vissza:
<x LastName="Achong"/>