Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te
SQL analiz uç noktasıMicrosoft Fabric'te
ambarMicrosoft Fabric'te SQL veritabanı
FOR Sorgu sonuçları için aşağıdaki seçeneklerden birini belirtmek üzere yan tümcesini kullanın.
- Gözatma modu imlecinde sorgu sonuçlarını görüntülerken güncelleştirmelere izin vermek için belirtin
FOR BROWSE. - Sorgu sonuçlarını XML olarak biçimlendirmek için belirtin
FOR XML. - Sorgu sonuçlarını JSON olarak biçimlendirmek için belirtin
FOR JSON.
Transact-SQL söz dizimi kuralları
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 ]
]
}
GÖZ ATMAK
BROWSE
DB-Library gözatma modu imlecinde verileri görüntülerken güncelleştirmelere izin verildiğini belirtir. Tablo bir zaman damgası sütunu içeriyorsa, tablonun benzersiz bir dizini varsa ve FOR BROWSE seçenek bir SQL Server örneğine gönderilen deyimlerin SELECT sonundaysa bir uygulamadaki tabloya göz atabilirsiniz.
Note
seçeneğini içeren FOR BROWSE bir SELECT deyiminde öğesini kullanamazsınız<lock_hint> HOLDLOCK.
FOR BROWSE işlecin katıldığı deyimlerde SELECTUNION görüntülenemez.
Note
Tablonun benzersiz dizin anahtarı sütunları null atanabilir olduğunda ve tablo dış birleşimin iç tarafında olduğunda, göz atma modu dizini desteklemez.
Gözatma modu, SQL Server tablonuzdaki satırları taramanıza ve tablonuzdaki verileri bir kerede bir satır güncelleştirmenize olanak tanır. Uygulamanızdaki bir SQL Server tablosuna göz atma modunda erişmek için aşağıdaki iki seçenekte birini kullanmanız gerekir:
SELECTSQL Server tablonuzdaki verilere erişmek için kullandığınız deyimi anahtar sözcüklerleFOR BROWSEbitmelidir. Gözatma modunu kullanma seçeneğini açtığınızdaFOR BROWSEgeçici tablolar oluşturulur.Göz atma modunu açmak için aşağıdaki Transact-SQL deyimini
NO_BROWSETABLEçalıştırmanız gerekir:SET NO_BROWSETABLE ON;seçeneğini açtığınızda
NO_BROWSETABLE, tümSELECTdeyimler seçeneği deyimlere eklenmiş gibiFOR BROWSEdavranır. Ancak,NO_BROWSETABLEseçenek genellikle sonuçları uygulamanıza göndermek için kullandığı geçici tablolarıFOR BROWSEoluşturmaz.
SQL Server tablolarındaki verilere göz atma modunda bir deyimi içeren OUTER JOIN bir SELECT sorgu kullanarak erişmeye çalıştığınızda ve bir deyimin iç tarafında bulunan tabloda benzersiz bir OUTER JOIN dizin tanımlandığında, gözatma modu benzersiz dizini desteklemez. Gözatma modu yalnızca tüm benzersiz dizin anahtarı sütunları değerleri kabul NULL ettiğinde benzersiz dizini destekler. Aşağıdaki koşullar doğruysa gözatma modu benzersiz dizini desteklemez:
Sql Server tablolarındaki verilere göz atma modunda, deyimini içeren
OUTER JOINbirSELECTsorgu kullanarak erişmeye çalışırsınız.Bir deyiminin iç tarafında bulunan tabloda benzersiz bir
OUTER JOINdizin tanımlanır.
Bu davranışı göz atma modunda yeniden oluşturmak için şu adımları izleyin:
SQL Server Management Studio'da adlı
SampleDBbir veritabanı oluşturun.SampleDBVeritabanında bir tablo vetrighther ikisi de adlıc1tek bir sütun içeren bir tablo oluşturuntleft. Tablodakic1sütundatleftbenzersiz bir dizin tanımlayın ve sütunu değerleri kabulNULLetmek üzere ayarlayın. Bunu yapmak için uygun bir sorgu penceresinde aşağıdaki Transact-SQL deyimlerini çalıştırın:CREATE TABLE tleft (c1 INT NULL UNIQUE); GO CREATE TABLE tright (c1 INT NULL); GOTabloya ve
tlefttabloyatrightbirkaç değer ekleyin. Tabloya birNULLdeğer eklediğinizdentleftemin olun. Bunu yapmak için sorgu penceresinde aşağıdaki Transact-SQL deyimlerini çalıştırın: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);Seçeneğini açın
NO_BROWSETABLE. Bunu yapmak için sorgu penceresinde aşağıdaki Transact-SQL deyimlerini çalıştırın:SET NO_BROWSETABLE ON;Sorguda
tleftdış birleşim deyimini kullanarak tablodaki vetrighttablodaki verilere erişinSELECT. Tablonun dış birleşim deyiminin iç tarafında olduğundan emintleftolun. Bunu yapmak için sorgu penceresinde aşağıdaki Transact-SQL deyimlerini çalıştırın:SELECT tleft.c1 FROM tleft RIGHT OUTER JOIN tright ON tleft.c1 = tright.c1 WHERE tright.c1 <> 2;Sonuçlar bölmesinde aşağıdaki çıkışa dikkat edin:
c1 --- NULL NULL
Gözatma modundaki tablolara erişmek için sorguyu SELECT çalıştırdıktan sonra, sorgunun SELECT sonuç kümesi deyiminin tanımı RIGHT OUTER JOIN nedeniyle tablodaki tleft sütun için c1 iki NULL değer içerir. Bu nedenle, sonuç kümesinde tablodan NULL gelen değerler ile NULL deyiminin tanıttığı değerler RIGHT OUTER JOIN arasında ayrım yapamazsınız. Sorgunun sonuç kümesindeki NULL değerleri yoksayması gerekiyorsa yanlış sonuçlar alabilirsiniz.
Note
Benzersiz dizine dahil edilen sütunlar değerleri kabul NULL etmese, sonuç kümesindeki NULL tüm değerler deyimi tarafından RIGHT OUTER JOIN tanıtılır.
XML için
XML
Sorgu sonuçlarının XML belgesi olarak döndürüleceklerini belirtir. Aşağıdaki XML modlarından biri belirtilmelidir: RAW, AUTO, EXPLICIT. XML verileri ve SQL Server hakkında daha fazla bilgi için bkz. FOR XML (SQL Server).
RAW [ ('ElementName') ]
Sorgu sonucunu alır ve sonuç kümesindeki her satırı, öğe etiketi olarak genel tanımlayıcısı <row /> olan bir XML öğesine dönüştürür. İsteğe bağlı olarak satır öğesi için bir ad belirtebilirsiniz. Sonuçta elde edilen XML çıktısı, her satır için oluşturulan satır öğesi olarak belirtilen ElementName öğesini kullanır. Daha fazla bilgi için bkz. FOR XML ile RAW modunu kullanma.
AUTO
Sorgu sonuçlarını basit, iç içe yerleştirilmiş bir XML ağacında döndürür. Yan tümcesinde FROM en az bir sütunun listelendiği yan tümcesindeki SELECT her tablo bir XML öğesi olarak temsil edilir. Yan tümcesinde SELECT listelenen sütunlar uygun öğe özniteliklerine eşlenir. Daha fazla bilgi için bkz. FOR XML ile AUTO modunu kullanma.
EXPLICIT
Sonuçta elde edilen XML ağacının şeklinin açıkça tanımlandığını belirtir. Bu modu kullanarak, istenen iç içe yerleştirme hakkında açıkça ek bilgi belirtmeleri için sorguları belirli bir şekilde yazmanız gerekir. Daha fazla bilgi için bkz . FOR XML ile AÇıK modu kullanma.
XMLDATA
Satır içi XDR şemasını döndürür, ancak sonuç için kök öğeyi eklemez. belirtirseniz XMLDATA, belgeye XDR şeması eklenir.
Important
XMLDATA yönergesi kullanım dışıdır. ve AUTO modları için RAW XSD oluşturma özelliğini kullanın. modunda yönergesinin XMLDATAEXPLICIT yerini alma. Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.
İstenmeyen satır sonlarını gizleme: Yan tümcesini kullanan bir sorgu çalıştırmak için SQL Server Management Studio 'yu FOR XML (SSMS) kullanabilirsiniz. Bazen büyük miktarda XML döndürülür ve tek bir kılavuz hücresinde görüntülenir. XML dizesi tek bir satırda birden fazla SSMS kılavuz hücresi barındırabilir. Bu gibi durumlarda, SSMS tüm XML dizesinin uzun kesimleri arasına satır sonu karakterleri ekleyebilir. Bu tür satır sonları, satırlar arasında bölünmemesi gereken bir alt dizenin ortasında oluşabilir. Bir atama AS XMLDATAkullanarak satır sonlarını önleyebilirsiniz. Bu çözüm, aşağıdaki Transact-SQL örnek FOR JSON PATH deyiminde olduğu gibi kullandığınızda SELECTda geçerli olabilir:
SELECT CAST (
(SELECT column1,
column2
FROM my_table
FOR XML PATH ('')) AS VARCHAR (MAX)
) AS XMLDATA;
XMLSCHEMA [ ('TargetNameSpaceURI') ]
Satır içi XSD şeması döndürür. Şemada belirtilen ad alanını döndüren bu yönergeyi belirtirken isteğe bağlı olarak bir hedef ad alanı URI'sini belirtebilirsiniz. Daha fazla bilgi için bkz. Satır içi XSD şeması oluşturma.
ÖĞE
Sütunların alt öğe olarak döndürüldüğünü belirtir. Aksi takdirde, sorgu bunları XML öznitelikleriyle eşler. Bu seçenek yalnızca , AUTOve PATH modlarında RAWdesteklenir. Daha fazla bilgi için bkz. FOR XML ile RAW modunu kullanma.
XSINIL
Sütun değerleri için NULLÖzniteliği True olarak ayarlanmış bir öğenin xsi:nil oluşturulduğunu belirtir. Bu seçeneği yalnızca yönergesiyle ELEMENTS belirtebilirsiniz. Daha fazla bilgi için bakınız:
YOK
Sütun değerleri için NULL xml sonucuna karşılık gelen XML öğelerinin eklenmediğini gösterir. Bu seçeneği yalnızca ile ELEMENTSbelirtin.
YOL [ ('ElementName') ]
Sonuç kümesindeki her satır için bir <row> öğe sarmalayıcı oluşturur. İsteğe bağlı olarak, öğe sarmalayıcısı için <row> bir öğe adı belirtebilirsiniz. gibi FOR XML PATH (''))boş bir dize sağlarsanız, sarmalayıcı öğesi oluşturulmaz. kullanmak PATH , yönergesi kullanılarak EXPLICIT yazılan sorgulara daha basit bir alternatif sağlayabilir. Daha fazla bilgi için bkz. FOR XML ile PATH modunu kullanma.
İKILI TABAN64
Sorgunun ikili verileri ikili base64 ile kodlanmış biçimde döndürdüğünü belirtir. ve EXPLICIT modunu kullanarak RAW ikili verileri aldığınızda, bu seçeneği belirtmeniz gerekir. Bu seçenek, modda varsayılan AUTO seçenektir.
TYPE
Sorgunun sonuçları xml türü olarak döndürdüğünü belirtir. Daha fazla bilgi için bkz. FOR XML sorguları içindeki TYPE yönergesi.
ROOT [ ('KökName') ]
Sonuçta elde edilen XML'e tek bir üst düzey öğenin eklendiğini belirtir. İsteğe bağlı olarak oluşturulacak kök öğenin adını belirtebilirsiniz. Kök adı belirtmezseniz, varsayılan <root> öğe eklenir.
Daha fazla bilgi için bkz. FOR XML (SQL Server).
Example
Aşağıdaki örnek ve FOR XML AUTO seçenekleriyle birlikte TYPE belirtirXMLSCHEMA. Seçenek nedeniyle TYPE sorgu, sonuç kümesini istemciye xml türü olarak döndürür.
XMLSCHEMA seçeneği, satır içi XSD şemasının döndürülen XML verilerine dahil olduğunu belirtir ve ELEMENTS seçeneği XML sonucunun öğe merkezli olduğunu belirtir.
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;
JSON için
Remarks
Doku Veri Ambarı'nda sorgu ile FOR JSONbitmelidir, bu nedenle sorguyu alt sorgular içinde kullanamazsınız.
JSON
JSON metni olarak biçimlendirilmiş bir sorgunun sonuçlarını döndürmek için belirtin FOR JSON . Ayrıca aşağıdaki JSON modlarından birini de belirtmeniz gerekir: AUTO veya PATH. yan tümcesi FOR JSON hakkında daha fazla bilgi için bkz. FOR JSON ile sorgu sonuçlarını JSON olarak biçimlendirme.
AUTO
belirterek SELECTJSON çıkışını deyiminin yapısına FOR JSON AUTO göre otomatik olarak biçimlendirin. Daha fazla bilgi ve örnek için bkz. JSON çıkışını AUTO moduyla otomatik olarak biçimlendirme.
PATH
belirterek JSON çıkışının biçimi üzerinde tam denetim elde edin FOR JSON PATH.
PATH modu, sarmalayıcı nesneleri oluşturmanızı ve karmaşık özellikleri iç içe yerleştirmenizi sağlar. Daha fazla bilgi ve örnek için bkz. PATH moduyla iç içe JSON çıkışını biçimlendirme.
INCLUDE_NULL_VALUES
yan tümcesi ile seçeneğini belirterek JSON çıkışına NULLINCLUDE_NULL_VALUES değerleri ekleyinFOR JSON. Bu seçeneği belirtmezseniz, çıktı sorgu sonuçlarındaki NULL değerleri için JSON özelliklerini içermez. Daha fazla bilgi ve örnek için bkz. JSON'a Null Değerler Ekleme - INCLUDE_NULL_VALUES Seçeneği.
ROOT [ ('KökName') ]
yan tümcesi ile ROOT seçeneğini belirterek JSON çıkışına FOR JSON tek, en üst düzey bir öğe ekleyin. Seçeneğini belirtmezseniz ROOT , JSON çıkışının kök öğesi yoktur. Daha fazla bilgi ve örnek için bkz. ROOT Seçeneği ile JSON Çıkışına Kök Düğüm Ekleme.
WITHOUT_ARRAY_WRAPPER
yan tümcesi ile WITHOUT_ARRAY_WRAPPER seçeneğini belirterek JSON çıkışını çevreleyen FOR JSON köşeli ayraçları varsayılan olarak kaldırın. Bu seçeneği belirtmezseniz, JSON çıkışı köşeli ayraç içine alınır.
WITHOUT_ARRAY_WRAPPER Çıkış olarak tek bir JSON nesnesi oluşturmak için seçeneğini kullanın. Daha fazla bilgi için bkz. Köşeli Ayraçları JSON'dan Kaldırma - WITHOUT_ARRAY_WRAPPER Seçeneği.
Daha fazla bilgi için bkz. FOR JSON ile sorgu sonuçlarını JSON olarak biçimlendirme.