Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Kueri SELECT mengembalikan hasil sebagai set baris. Anda dapat secara opsional mengambil hasil formal kueri SQL sebagai XML dengan menentukan FOR XML klausa dalam kueri. Klausa FOR XML dapat digunakan dalam kueri tingkat atas dan dalam subkueri. Klausa tingkat FOR XML atas hanya dapat digunakan dalam SELECT pernyataan. Dalam subkueri, FOR XML dapat digunakan dalam pernyataan INSERT, UPDATE, dan DELETE.
FOR XML juga dapat digunakan dalam pernyataan penugasan.
FOR XML Dalam klausa, Anda menentukan salah satu mode ini:
RAWAUTOEXPLICITPATH
Mode RAW menghasilkan satu elemen <row> per baris dalam rowset yang dikembalikan oleh pernyataan SELECT. Anda dapat membuat hierarki XML dengan menulis kueri berlapis FOR XML .
Mode AUTO ini menghasilkan struktur bertingkat pada XML yang dihasilkan dengan menggunakan heuristik berdasarkan cara pernyataan SELECT ditetapkan. Anda memiliki kontrol minimal atas bentuk XML yang dihasilkan. Kueri bertingkat FOR XML dapat ditulis untuk menghasilkan hierarki XML yang melampaui struktur XML yang dihasilkan oleh heuristik mode AUTO.
Mode ini EXPLICIT memungkinkan lebih banyak kontrol atas bentuk XML. Anda dapat mencampur atribut dan elemen sesuai kemauan dalam memutuskan bentuk XML. Ini memerlukan format tertentu untuk kumpulan baris yang dihasilkan yang dihasilkan karena eksekusi kueri. Format set baris ini kemudian dipetakan ke dalam bentuk XML. Kekuatan mode EXPLICIT adalah mencampurkan atribut dan elemen secara bebas, membuat pembungkus dan properti kompleks bersarang, membuat nilai yang dipisahkan dengan spasi (misalnya, atribut OrderID mungkin berisi daftar nilai ID pesanan), dan konten campuran.
Namun, kueri mode penulisan EXPLICIT bisa rumit. Anda dapat menggunakan beberapa kemampuan baru FOR XML, seperti menulis kueri mode FOR XML RAW, AUTO, atau PATH bertingkat dan direktif TYPE, alih-alih menggunakan mode EXPLICIT untuk menghasilkan hierarki. Kueri bertingkat FOR XML dapat menghasilkan XML apa pun yang dapat Anda hasilkan dengan menggunakan mode EXPLICIT. Untuk informasi selengkapnya, lihat Menggunakan kueri FOR XML bertingkat dan direktif TYPE dalam kueri FOR XML.
Mode PATH beserta kemampuan kueri FOR XML bertingkat memberikan fleksibilitas mode EXPLICIT dengan cara yang lebih sederhana.
Mode ini hanya berlaku selama eksekusi kueri yang untuknya mode ini ditetapkan. Hal tersebut tidak memengaruhi hasil kueri berikutnya.
FOR XML tidak valid untuk pilihan apa pun yang digunakan dengan FOR BROWSE klausa.
Contoh
Pernyataan SELECT berikut mengambil informasi dari tabel Sales.Customer dan Sales.SalesOrderHeader dalam basis data AdventureWorks2025. Kueri ini menentukan mode AUTO dalam klausa FOR XML:
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;
Klausa FOR XML dan nama server
Saat pernyataan SELECT dengan klausa FOR XML menentukan nama yang terdiri dari empat bagian dalam kueri, nama server tidak ditampilkan dalam dokumen XML yang dihasilkan ketika kueri dijalankan di komputer lokal. Namun, nama server dikembalikan sebagai nama empat bagian saat kueri dijalankan di server jaringan.
Misalnya, pertimbangkan kueri ini:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2022.Person.Person
FOR XML AUTO;
Server lokal: Saat ServerName adalah server lokal, kueri mengembalikan teks berikut:
<AdventureWorks2022.Person.Person LastName="Achong" />
Server jaringan: Saat ServerName adalah server jaringan, kueri mengembalikan teks berikut:
<ServerName.AdventureWorks2022.Person.Person LastName="Achong" />
Hindari ambiguitas: Potensi ambiguitas ini dapat dihindari dengan menentukan alias ini:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2022.Person.Person x
FOR XML AUTO;
Sekarang kueri yang telah didisambiguasi mengembalikan teks berikut:
<x LastName="Achong"/>