UNTUK XML (SQL Server)
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
Kueri SELECT mengembalikan hasil sebagai set baris. Anda dapat secara opsional mengambil hasil formal kueri SQL sebagai XML dengan menentukan klausa FOR XML dalam kueri. Klausa FOR XML dapat digunakan dalam kueri tingkat atas dan dalam subkueri. Klausa FOR XML tingkat atas hanya dapat digunakan dalam pernyataan SELECT. Dalam subkueri, FOR XML dapat digunakan dalam pernyataan INSERT, UPDATE, dan DELETE. FOR XML juga dapat digunakan dalam pernyataan penugasan.
Dalam klausa FOR XML, Anda menentukan salah satu mode ini:
- RAW
- AUTO
- EKSPLISIT
- PATH
Mode RAW menghasilkan elemen baris> tunggal <per baris dalam set baris yang dikembalikan oleh pernyataan SELECT. Anda dapat membuat hierarki XML dengan menulis kueri XML berlapis.
Mode AUTO menghasilkan bersarang dalam XML yang dihasilkan dengan menggunakan heuristik berdasarkan cara pernyataan SELECT ditentukan. Anda memiliki kontrol minimal atas bentuk XML yang dihasilkan. Kueri XML berlapis dapat ditulis untuk menghasilkan hierarki XML di luar bentuk XML yang dihasilkan oleh heuristik mode OTOMATIS.
Mode EKSPLISIT 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 EKSPLISIT adalah mencampur atribut dan elemen sesering mungkin, membuat pembungkus dan properti kompleks berlapis, membuat nilai yang dipisahkan ruang (misalnya, atribut OrderID mungkin memiliki daftar nilai ID pesanan), dan konten campuran.
Namun, menulis kueri mode EKSPLISIT bisa rumit. Anda dapat menggunakan beberapa kemampuan FOR XML baru, seperti menulis kueri mode FOR XML RAW/AUTO/PATH berlapis dan direktif TYPE, alih-alih menggunakan mode EKSPLISIT untuk menghasilkan hierarki. Kueri XML berlapis dapat menghasilkan XML apa pun yang dapat Anda hasilkan dengan menggunakan mode EKSPLISIT. Untuk informasi selengkapnya, lihat Menggunakan Kueri XML Berlapis dan Direktif TYPE di Untuk Kueri XML.
Mode PATH bersama dengan kemampuan kueri XML BERlapis memberikan fleksibilitas mode EKSPLISIT dengan cara yang lebih sederhana.
Mode ini hanya berlaku untuk eksekusi kueri yang ditetapkan. Mereka tidak memengaruhi hasil kueri berikutnya.
FOR XML tidak valid untuk pilihan apa pun yang digunakan dengan klausa FOR BROWSE.
Contoh
Pernyataan berikut SELECT
mengambil informasi dari Sales.Customer
tabel dan Sales.SalesOrderHeader
dalam AdventureWorks2022
database. Kueri ini menentukan mode dalam FOR XML
klausaAUTO
:
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;
Klausul FOR XML dan Nama Server
Saat pernyataan SELECT dengan klausul FOR XML menentukan nama empat bagian dalam kueri, nama server tidak dikembalikan dalam dokumen XML yang dihasilkan saat 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 tidak ambigu mengembalikan teks berikut:
<x LastName="Achong"/>
Baca juga
Sintaks Dasar Klausul FOR XML
Gunakan Mode RAW dengan FOR XML
Menggunakan Mode OTOMATIS dengan FOR XML
Gunakan Mode EKSPLISIT dengan FOR XML
Gunakan Mode JALUR dengan FOR XML
OPENXML (SQL Server)
Menambahkan Namespace ke Kueri dengan XMLNAMESPACES
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk