Menggunakan kueri XML berlapis untuk
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Jenis data xml dan direktif TYPE dalam kueri FOR XML memungkinkan XML yang dikembalikan oleh kueri FOR XML untuk diproses di server serta pada klien.
Pemrosesan dengan variabel jenis xml
Anda dapat menetapkan hasil kueri FOR XML ke variabel jenis xml , atau menggunakan XQuery untuk mengkueri hasilnya, dan menetapkan hasil tersebut ke variabel jenis xml untuk pemrosesan lebih lanjut.
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" />
Anda juga dapat memproses XML yang dikembalikan dalam variabel, @x
, dengan menggunakan salah satu metode jenis data xml . Misalnya, Anda dapat mengambil ProductModelID
nilai atribut dengan menggunakan metode value().
DECLARE @i int;
SET @i = (SELECT @x.value('/row[1]/@ProductModelID[1]', 'int'));
SELECT @i;
Dalam contoh berikut, hasil FOR XML
kueri dikembalikan sebagai jenis xml , karena arahan TYPE
ditentukan dalam FOR XML
klausa.
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=119 or ProductModelID=122
FOR XML RAW, TYPE,ROOT('myRoot');
Ini adalah hasilnya:
<myRoot>
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
<row ProductModelID="119" Name="Bike Wash" />
</myRoot>
Karena hasilnya adalah jenis xml , Anda dapat menentukan salah satu metode tipe data xml secara langsung terhadap XML ini, seperti yang diperlihatkan dalam kueri berikut. Dalam kueri, metode query() (Tipe Data xml) digunakan untuk mengambil turunan elemen pertama <row>
dari <myRoot>
elemen.
SELECT (SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=119 or ProductModelID=122
FOR XML RAW, TYPE,ROOT('myRoot')).query('/myRoot[1]/row[1]');
Ini adalah hasilnya:
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
Mengembalikan hasil kueri XML dalam ke kueri luar sebagai instans jenis xml
Anda dapat menulis kueri berlapis FOR XML
di mana hasil kueri dalam dikembalikan sebagai jenis xml ke kueri luar. Contohnya:
SELECT Col1,
Col2,
( SELECT Col3, Col4
FROM T2
WHERE T2.Col = T1.Col
...
FOR XML AUTO, TYPE )
FROM T1
WHERE ...
FOR XML AUTO, TYPE;
Perhatikan hal berikut ini dari kueri sebelumnya:
XML yang dihasilkan oleh kueri dalam
FOR XML
ditambahkan ke XML yang dihasilkan oleh luarFOR XML
.Kueri dalam menentukan arahan
TYPE
. Oleh karena itu, data XML yang dikembalikan oleh kueri dalam berjenis xml . Jika direktif TYPE tidak ditentukan, hasil kueri dalamFOR XML
dikembalikan sebagai nvarchar(max) dan data XML diberi izin.
Mengontrol bentuk data XML yang dihasilkan
Kueri XML berlapis memberi Anda lebih banyak kontrol dalam menentukan bentuk data XML yang dihasilkan. Anda dapat menggunakan kueri XML berlapis untuk membuat XML yang sebagian berentrik atribut dan sebagian elemen-sentris.
Untuk informasi selengkapnya tentang menentukan XML yang berfokus pada atribut dan elemen-sentris dengan kueri XML berlapis, lihat Untuk Kueri XML Dibandingkan dengan Kueri XML Berlapis dan XML Bentuk dengan Kueri XML Berlapis UNTUK XML.
Anda dapat membuat hierarki XML yang menyertakan saudara kandung dengan menentukan mode OTOMATIS berlapis untuk kueri XML. Untuk informasi selengkapnya, lihat Membuat Saudara dengan Kueri Mode OTOMATIS Berlapis.
Terlepas dari mode mana yang Anda gunakan, kueri XML berlapis memberikan kontrol lebih besar dalam menjelaskan bentuk XML yang dihasilkan. Mereka dapat digunakan di tempat kueri mode EKSPLISIT.
Contoh
Topik berikut ini menyediakan contoh kueri XML BERlapis.
Untuk Kueri XML Dibandingkan dengan Kueri XML Berlapis
Membandingkan kueri XML TINGKAT tunggal dengan kueri XML BERlapis. Contoh ini mencakup demonstrasi tentang cara menentukan XML yang berpusat pada atribut dan berpusat pada elemen sebagai hasil kueri.Membuat Saudara dengan Kueri Mode OTOMATIS Berlapis
Memperlihatkan cara menghasilkan saudara dengan menggunakan kueri mode OTOMATIS berlapisMenggunakan Kueri XML Berlapis di ASP.NET
Menunjukkan bagaimana aplikasi ASPX dapat menggunakan FOR XML untuk mengembalikan XML dari SQL Server.Xml Bentuk dengan Kueri XML Berlapis
Memperlihatkan cara menggunakan kueri XML berlapis untuk mengontrol struktur dokumen XML yang dibuat oleh SQL Server.