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
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL di Microsoft Fabric
FOR Gunakan klausa untuk menentukan salah satu opsi berikut untuk hasil kueri.
- Tentukan
FOR BROWSEuntuk memperbolehkan pembaruan saat menampilkan hasil kueri dalam kursor mode penelusuran. - Tentukan
FOR XMLuntuk memformat hasil kueri sebagai XML. - Tentukan
FOR JSONuntuk memformat hasil kueri sebagai JSON.
Syntax
[ FOR { BROWSE | <XML> | <JSON> } ]
<XML> ::=
XML
{
{ RAW [ ( 'ElementName' ) ] | AUTO }
[
<CommonDirectivesForXML>
[ , { XMLDATA | XMLSCHEMA [ ( 'TargetNameSpaceURI' ) ] } ]
[ , ELEMENTS [ XSINIL | ABSENT ]
]
| EXPLICIT
[
<CommonDirectivesForXML>
[ , XMLDATA ]
]
| PATH [ ( 'ElementName' ) ]
[
<CommonDirectivesForXML>
[ , ELEMENTS [ XSINIL | ABSENT ] ]
]
}
<CommonDirectivesForXML> ::=
[ , BINARY BASE64 ]
[ , TYPE ]
[ , ROOT [ ( 'RootName' ) ] ]
<JSON> ::=
JSON
{
{ AUTO | PATH }
[
[ , ROOT [ ( 'RootName' ) ] ]
[ , INCLUDE_NULL_VALUES ]
[ , WITHOUT_ARRAY_WRAPPER ]
]
}
UNTUK MENELUSURI
BROWSE
Menentukan bahwa pembaruan diizinkan saat melihat data dalam kursor mode penelusuran DB-Library. Anda dapat menelusuri tabel dalam aplikasi jika tabel menyertakan kolom tanda waktu , tabel memiliki indeks unik, dan FOR BROWSE opsi berada di akhir SELECT pernyataan yang dikirim ke instans SQL Server.
Note
Anda tidak dapat menggunakan <lock_hint> HOLDLOCK dalam SELECT pernyataan yang menyertakan FOR BROWSE opsi .
FOR BROWSE tidak dapat muncul dalam SELECT pernyataan yang UNION bergabung dengan operator.
Note
Saat kolom kunci indeks unik tabel dapat diubah ke null, dan tabel berada di sisi dalam gabungan luar, mode telusuri tidak mendukung indeks.
Mode telusur memungkinkan Anda memindai baris dalam tabel SQL Server Anda dan memperbarui data dalam tabel Anda satu baris sekaligus. Untuk mengakses tabel SQL Server di aplikasi Anda dalam mode telusur, Anda harus menggunakan salah satu dari dua opsi berikut:
Pernyataan
SELECTyang Anda gunakan untuk mengakses data dari tabel SQL Server Anda harus diakhir dengan kata kunciFOR BROWSE. Saat Anda mengaktifkanFOR BROWSEopsi untuk menggunakan mode telusur, tabel sementara dibuat.Anda harus menjalankan pernyataan Transact-SQL berikut untuk mengaktifkan mode telusur dengan menggunakan
NO_BROWSETABLEopsi :SET NO_BROWSETABLE ON;Saat Anda mengaktifkan
NO_BROWSETABLEopsi , semuaSELECTpernyataan bersifat seolah-olahFOR BROWSEopsi ditambahkan ke pernyataan. Namun,NO_BROWSETABLEopsi tidak membuat tabel sementara yangFOR BROWSEumumnya digunakan opsi untuk mengirim hasil ke aplikasi Anda.
Saat Anda mencoba mengakses data dari tabel SQL Server dalam mode telusuri dengan menggunakan SELECT kueri yang melibatkan OUTER JOIN pernyataan, dan ketika indeks unik didefinisikan pada tabel yang ada di sisi OUTER JOIN dalam pernyataan, mode telusuri tidak mendukung indeks unik. Mode telusur mendukung indeks unik hanya ketika semua kolom kunci indeks unik dapat menerima NULL nilai. Mode telusur tidak mendukung indeks unik jika kondisi berikut ini benar:
Anda mencoba mengakses data dari tabel SQL Server dalam mode telusuri dengan menggunakan
SELECTkueri yang melibatkanOUTER JOINpernyataan.Indeks unik didefinisikan pada tabel yang ada di sisi
OUTER JOINdalam pernyataan.
Untuk mereprodusi perilaku ini dalam mode telusur, ikuti langkah-langkah berikut:
Di SQL Server Management Studio, buat database bernama
SampleDB.SampleDBDalam database, buattlefttabel dantrighttabel yang keduanya berisi satu kolom bernamac1. Tentukan indeks unik pada kolomc1dalam tabeltleft, dan atur kolom untuk menerima nilaiNULL. Untuk melakukan ini, jalankan pernyataan Transact-SQL berikut ini di jendela kueri yang sesuai:CREATE TABLE tleft (c1 INT NULL UNIQUE); GO CREATE TABLE tright (c1 INT NULL); GOSisipkan beberapa nilai dalam tabel
tleftdan tabeltright. Pastikan Anda menyisipkan nilaiNULLdalam tabeltleft. Untuk melakukan ini, jalankan pernyataan Transact-SQL berikut ini di jendela kueri:INSERT INTO tleft VALUES (2); INSERT INTO tleft VALUES (NULL); INSERT INTO tright VALUES (1); INSERT INTO tright VALUES (3); INSERT INTO tright VALUES (NULL);Aktifkan opsi
NO_BROWSETABLE. Untuk melakukan ini, jalankan pernyataan Transact-SQL berikut ini di jendela kueri:SET NO_BROWSETABLE ON;Akses data dalam tabel
tleftdan tabeltrightdengan menggunakan pernyataan gabungan luar dalam kueriSELECT. Pastikan bahwa tabeltleftberada di sisi dalam pernyataan gabungan luar. Untuk melakukan ini, jalankan pernyataan Transact-SQL berikut ini di jendela kueri:SELECT tleft.c1 FROM tleft RIGHT OUTER JOIN tright ON tleft.c1 = tright.c1 WHERE tright.c1 <> 2;Perhatikan output berikut di panel Hasil:
c1 --- NULL NULL
Setelah Anda menjalankan SELECT kueri untuk mengakses tabel dalam mode telusur, kumpulan SELECT hasil kueri berisi dua NULL nilai untuk c1 kolom dalam tleft tabel karena definisi RIGHT OUTER JOIN pernyataan. Oleh karena itu, dalam tataan hasil, Anda tidak dapat membedakan antara NULL nilai yang berasal dari tabel dan NULL nilai yang RIGHT OUTER JOIN diperkenalkan oleh pernyataan. Anda mungkin menerima hasil yang salah jika kueri harus mengabaikan NULL nilai dari kumpulan hasil.
Note
Jika kolom yang disertakan dalam indeks unik tidak menerima NULL nilai, semua NULL nilai dalam tataan hasil diperkenalkan oleh RIGHT OUTER JOIN pernyataan .
UNTUK FORMAT XML
XML
Menentukan bahwa hasil kueri akan dikembalikan sebagai dokumen XML. Salah satu mode XML berikut harus ditentukan: RAW, AUTO, EXPLICIT. Untuk informasi selengkapnya tentang data XML dan SQL Server, lihat UNTUK XML (SQL Server).
RAW [ ('ElementName') ]
Mengambil hasil kueri dan mengubah setiap baris dalam hasil yang diatur ke dalam elemen XML dengan pengidentifikasi generik <row /> sebagai tag elemen. Anda dapat secara opsional menentukan nama untuk elemen baris. Output XML yang dihasilkan menggunakan ElementName yang ditentukan sebagai elemen baris yang dihasilkan untuk setiap baris. Untuk informasi selengkapnya, lihat Menggunakan mode RAW dengan FOR XML.
AUTO
Mengembalikan hasil kueri di pohon XML berlapis sederhana. Setiap tabel dalam klausa FROM, yang setidaknya satu kolomnya tercantum dalam klausa SELECT, dinyatakan sebagai elemen XML. Kolom yang tercantum dalam klausa SELECT dipetakan ke atribut elemen yang sesuai. Untuk informasi selengkapnya, lihat Menggunakan mode OTOMATIS dengan FOR XML.
EXPLICIT
Menentukan bahwa bentuk pohon XML yang dihasilkan ditentukan secara eksplisit. Dengan menggunakan mode ini, Anda harus menulis kueri dengan cara tertentu sehingga mereka menentukan informasi tambahan tentang berlapis yang diinginkan secara eksplisit. Untuk informasi selengkapnya, lihat Menggunakan mode EKSPLISIT dengan FOR XML.
XMLDATA
Mengembalikan skema XDR sebaris, tetapi tidak menambahkan elemen akar ke hasilnya. Jika Anda menentukan XMLDATA, skema XDR ditambahkan ke dokumen.
Important
Direktif XMLDATA tidak digunakan lagi. Gunakan pembuatan XSD untuk RAW mode dan AUTO . Tidak ada penggantian untuk direktif XMLDATA dalam EXPLICIT mode. Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
Menekan hentian baris yang tidak diinginkan: Anda mungkin menggunakan SQL Server Management Studio (SSMS) untuk menjalankan kueri yang menggunakan klausa FOR XML . Terkadang, sejumlah besar XML dikembalikan dan ditampilkan dalam satu sel kisi. String XML bisa lebih panjang dari satu sel kisi SSMS dapat ditahan pada satu baris. Dalam kasus ini, SSMS mungkin menyisipkan karakter pemisah baris di antara segmen panjang dari seluruh string XML. Hentian baris tersebut mungkin terjadi di tengah substring yang seharusnya tidak dibagi di seluruh baris. Anda dapat mencegah hentian baris dengan menggunakan cast AS XMLDATA. Solusi ini juga dapat berlaku saat Anda menggunakan FOR JSON PATH, seperti dalam contoh SELECT pernyataan Transact-SQL berikut:
SELECT CAST (
(SELECT column1,
column2
FROM my_table
FOR XML PATH ('')) AS VARCHAR (MAX)
) AS XMLDATA;
XMLSCHEMA [ ('TargetNameSpaceURI') ]
Mengembalikan skema XSD sebaris. Anda dapat secara opsional menentukan URI namespace target saat menentukan direktif ini, yang mengembalikan namespace yang ditentukan dalam skema. Untuk informasi selengkapnya, lihat Membuat skema XSD sebaris.
ELEMENTS
Menentukan bahwa kolom dikembalikan sebagai subelemen. Jika tidak, kueri memetakannya ke atribut XML. Opsi ini hanya didukung dalam RAWmode , AUTO, dan PATH . Untuk informasi selengkapnya, lihat Menggunakan mode RAW dengan FOR XML.
XSINIL
Menentukan bahwa elemen dengan xsi:nil atribut yang diatur ke True dibuat untuk NULL nilai kolom. Anda hanya dapat menentukan opsi ini dengan direktif ELEMENTS . Untuk informasi selengkapnya, lihat:
ABSENT
Menunjukkan bahwa untuk NULL nilai kolom, elemen XML terkait tidak ditambahkan dalam hasil XML. Tentukan opsi ini hanya dengan ELEMENTS.
PATH [ ('ElementName') ]
Menghasilkan pembungkus elemen <row> untuk setiap baris dalam tataan hasil. Anda dapat secara opsional menentukan nama elemen untuk pembungkus elemen <row>. Jika Anda menyediakan string kosong, seperti FOR XML PATH ('')), elemen pembungkus tidak dihasilkan. Menggunakan PATH mungkin memberikan alternatif yang lebih sederhana untuk kueri yang ditulis menggunakan arahan EXPLICIT. Untuk informasi selengkapnya, lihat Menggunakan mode PATH dengan FOR XML.
BINER BASE64
Menentukan bahwa kueri mengembalikan data biner dalam format yang dikodekan base64 biner. Saat Anda mengambil data biner dengan menggunakan RAW mode dan EXPLICIT , Anda harus menentukan opsi ini. Opsi ini adalah default dalam AUTO mode.
TYPE
Menentukan bahwa kueri mengembalikan hasil sebagai jenis xml . Untuk informasi selengkapnya, lihat Direktif TYPE di untuk kueri XML.
ROOT [ ('RootName') ]
Menentukan bahwa elemen tingkat atas tunggal ditambahkan ke XML yang dihasilkan. Anda dapat secara opsional menentukan nama elemen akar yang akan dihasilkan. Jika Anda tidak menentukan nama akar, elemen default <root> ditambahkan.
Untuk informasi selengkapnya, lihat UNTUK XML (SQL Server).
Example
Contoh berikut menentukan FOR XML AUTO dengan TYPE opsi dan XMLSCHEMA . Karena opsi , TYPE kueri mengembalikan hasil yang diatur ke klien sebagai jenis xml . Opsi XMLSCHEMA menentukan bahwa skema XSD sebaris disertakan dalam data XML yang dikembalikan, dan ELEMENTS opsi menentukan bahwa hasil XML berentrik elemen.
USE AdventureWorks2025;
SELECT p.BusinessEntityID,
FirstName,
LastName,
PhoneNumber AS Phone
FROM Person.Person AS p
INNER JOIN Person.PersonPhone AS pph
ON p.BusinessEntityID = pph.BusinessEntityID
WHERE LastName LIKE 'G%'
ORDER BY LastName, FirstName
FOR XML AUTO, TYPE, XMLSCHEMA, ELEMENTS XSINIL;
UNTUK JSON
Remarks
Di Fabric Data Warehouse, kueri harus diakhir dengan FOR JSON, sehingga Anda tidak dapat menggunakannya di dalam subkueri.
JSON
Tentukan FOR JSON untuk mengembalikan hasil kueri yang diformat sebagai teks JSON. Anda juga perlu menentukan salah satu mode JSON berikut: AUTO atau PATH. Untuk informasi selengkapnya tentang FOR JSON klausa, lihat Memformat hasil kueri sebagai JSON dengan FOR JSON.
AUTO
Format output JSON secara otomatis berdasarkan struktur pernyataan SELECT dengan menentukan FOR JSON AUTO. Untuk informasi dan contoh selengkapnya, lihat Memformat output JSON secara otomatis dengan mode AUTO.
PATH
Dapatkan kontrol penuh atas format output JSON dengan menentukan FOR JSON PATH. mode PATH memungkinkan Anda membuat objek pembungkus dan properti kompleks sarang. Untuk informasi dan contoh selengkapnya, lihat Memformat output JSON berlapis dengan mode PATH.
INCLUDE_NULL_VALUES
Sertakan nilai NULL dalam output JSON dengan menentukan opsi INCLUDE_NULL_VALUES dengan klausa FOR JSON. Jika Anda tidak menentukan opsi ini, output tidak menyertakan properti JSON untuk NULL nilai dalam hasil kueri. Untuk informasi dan contoh selengkapnya, lihat Menyertakan Nilai Null di JSON - opsi INCLUDE_NULL_VALUES.
ROOT [ ('RootName') ]
Tambahkan elemen tingkat atas tunggal ke output JSON dengan menentukan opsi ROOT dengan klausa FOR JSON. Jika Anda tidak menentukan opsi ROOT, output JSON tidak memiliki elemen akar. Untuk informasi dan contoh selengkapnya, lihat Menambahkan Simpul Akar ke Output JSON dengan Opsi ROOT.
WITHOUT_ARRAY_WRAPPER
Hapus tanda kurung siku yang mengelilingi output JSON secara default dengan menentukan opsi WITHOUT_ARRAY_WRAPPER dengan klausa FOR JSON. Jika Anda tidak menentukan opsi ini, output JSON diapit dalam tanda kurung siku. Gunakan opsi WITHOUT_ARRAY_WRAPPER untuk menghasilkan satu objek JSON sebagai output. Untuk informasi lebih lanjut, lihat Menghapus Kurung Siku dari JSON - WITHOUT_ARRAY_WRAPPER Option.
Untuk informasi selengkapnya, lihat Memformat hasil kueri sebagai JSON dengan FOR JSON.