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 a(z) FOR XML használható a(z) INSERT, UPDATE és DELETE utasításokban.
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 heuristikák alapján hoz létre beágyazást az eredményül kapott XML-ben, attól függően, hogyan van megadva a SELECT utasítás. 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 EXPLICIT mód ereje abban rejlik, hogy tetszőlegesen keverheti az attribútumokat és elemeket, burkolóelemeket és összetett beágyazott tulajdonságokat hozhat létre, szóközzel elválasztott értékeket állíthat elő (például az OrderID attribútum rendelésazonosító-értékek listáját tartalmazhatja), valamint vegyes tartalmat is létrehozhat.
Azonban a EXPLICIT módban történő lekérdezésírás körülményes lehet. A hierarchiák létrehozásához az EXPLICIT mód használata helyett használhatja az új FOR XML képességek némelyikét, például beágyazott FOR XML RAW, AUTO vagy PATH módú lekérdezések írását, valamint a TYPE 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óért lásd: Beágyazott FOR XML-lekérdezések használata és TYPE irányelv használata a FOR 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és esetén, amelyet FOR BROWSE záradékkal használnak.
Példák
Az alábbi SELECT utasítás a AdventureWorks2025 adatbázis Sales.Customer és Sales.SalesOrderHeader tábláiból kér le információkat. 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"/>