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 XML- adattípusa és az XML-lekérdezések TÍPUS irányelve lehetővé teszi, hogy a FOR XML-lekérdezések által visszaadott XML feldolgozása a kiszolgálón és az ügyfélen is elvégezhető legyen.
Feldolgozás XML-típusváltozókkal
A FOR XML-lekérdezés eredményét hozzárendelheti egy xml típusváltozóhoz, vagy xQuery használatával lekérdezheti az eredményt, és hozzárendelheti az eredményt egy xml típusváltozóhoz további feldolgozás céljából.
DECLARE @x xml
SET @x=(SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=122 or ProductModelID=119
FOR XML RAW, TYPE)
SELECT @x
-- Result
--<row ProductModelID="122" Name="All-Purpose Bike Stand" />
--<row ProductModelID="119" Name="Bike Wash" />
A @xváltozóban visszaadott XML-t az xml adattípus egyik metódusával is feldolgozhatja. A ProductModelID attribútum értékét például a metódus érték() használatával szerezhetjük be.
DECLARE @i int;
SET @i = (SELECT @x.value('/row[1]/@ProductModelID[1]', 'int'));
SELECT @i;
Az alábbi példában a FOR XML lekérdezés eredménye xml- típusként lesz visszaadva, mivel a TYPE irányelv a FOR XML záradékban van megadva.
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=119 or ProductModelID=122
FOR XML RAW, TYPE,ROOT('myRoot');
Ez az eredmény:
<myRoot>
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
<row ProductModelID="119" Name="Bike Wash" />
</myRoot>
Mivel az eredmény xml típusú, a xml adat típus metódusai közül egyet közvetlenül az XML-re alkalmazhat, mint az az alábbi lekérdezésben is látható. A lekérdezésben a query() metódus (xml adattípus) az <row> elem első <myRoot> elemének lekérésére szolgál.
SELECT (SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=119 or ProductModelID=122
FOR XML RAW, TYPE,ROOT('myRoot')).query('/myRoot[1]/row[1]');
Ez az eredmény:
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
Belső XML-lekérdezés eredményeinek visszaadása külső lekérdezéseknek XML-típuspéldányként
Beágyazott FOR XML lekérdezéseket írhat, ahol a belső lekérdezés eredménye xml- típusként lesz visszaadva a külső lekérdezéshez. Például:
SELECT Col1,
Col2,
( SELECT Col3, Col4
FROM T2
WHERE T2.Col = T1.Col
...
FOR XML AUTO, TYPE )
FROM T1
WHERE ...
FOR XML AUTO, TYPE;
Jegyezze fel az előző lekérdezésben szereplő következőket:
A belső
FOR XMLlekérdezés által létrehozott XML hozzáadódik a külsőFOR XMLáltal létrehozott XML-hez.A belső lekérdezés a
TYPEdirektívát határozza meg. Ezért a belső lekérdezés által visszaadott XML-adatok xml típusúak. Ha a TYPE direktíva nincs megadva, a belsőFOR XMLlekérdezés eredménye nvarchar(max), és az XML-adatok entitásként lesznek visszaadva.
Az eredményként kapott XML-adatok alakzatának szabályozása
A beágyazott XML-lekérdezésekkel jobban meghatározhatja az eredményként kapott XML-adatok alakját. Beágyazott FOR XML-lekérdezésekkel olyan XML-lekérdezéseket hozhat létre, amelyek részben attribútum-központúak, részben elemközpontúak.
További információ az attribútum- és elemközpontú XML megadásáról beágyazott FOR XML-lekérdezésekkel: lásd "Az XML-lekérdezések összehasonlítása a beágyazott FOR XML-lekérdezésekkel" és "XML alakítás beágyazott FOR XML-lekérdezésekkel".
A testvéreket tartalmazó XML-hierarchiákat az XML-lekérdezések beágyazott AUTO módjának megadásával hozhatja létre. További információ: Testvérek generálása beágyazott AUTOMATIKUS módú lekérdezéssel.
Függetlenül attól, hogy melyik módot használja, a beágyazott XML-lekérdezések nagyobb ellenőrzést biztosítanak az eredményként kapott XML alakjának leírásában. Explicit módú lekérdezések helyett használhatók.
Példák
Az alábbi témakörök példákat mutatnak be a beágyazott FOR XML-lekérdezésekre.
Az XML-lekérdezés összehasonlítása a beágyazott FOR XML-lekérdezéssel
Egy egyszintű XML-lekérdezést hasonlít össze egy beágyazott FOR XML-lekérdezéssel. Ez a példa bemutatja, hogyan lehet attribútum-központú és elemközpontú XML-t is megadni a lekérdezés eredményeként.Testvérek generálása beágyazott AUTOMATIKUS módú lekérdezéssel
Bemutatja, hogyan hozhat létre testvéreket beágyazott AUTO módú lekérdezésselBeágyazott FOR XML lekérdezések alkalmazása az ASP.NET-ben
Bemutatja, hogyan használhat egy ASPX alkalmazás "FOR XML"-t az XML-visszaadásához az SQL Serverből.XML alakítása beágyazott FOR XML lekérdezésekkel
Bemutatja, hogyan használhatók beágyazott FOR XML-lekérdezések az SQL Server által létrehozott XML-dokumentumok szerkezetének szabályozására.