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ı
Sorgu sonuçları için aşağıdaki seçeneklerden birini belirtmek için FOR yan tümcesini kullanın.
belirterek
FOR BROWSEgöz atma modu imlecinde sorgu sonuçlarını görüntülerken güncelleştirmelere izin verin.belirterek sorgu sonuçlarını XML olarak biçimlendirin
FOR XML.belirterek sorgu sonuçlarını JSON olarak biçimlendirin
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 verileceği belirtir. Tablo bir zaman damgası sütunu içeriyorsa, tablo benzersiz bir dizine sahipse ve FOR BROWSE seçeneği bir SQL Server örneğine gönderilen SELECT deyimlerinin sonundaysa, bir uygulamada tabloya göz atılabilir.
Note
FOR BROWSE seçeneğini içeren bir SELECT deyiminde HOLDLOCK lock_hint< kullanamazsınız>.
FOR BROWSE, UNION işleci tarafından birleştirilen SELECT deyimlerinde görüntülenemez.
Note
Tablonun benzersiz dizin anahtarı sütunları null atanabilir olduğunda ve tablo dış birleşimin iç tarafındaysa, dizin göz atma modu tarafından desteklenmez.
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:
SQL Server tablonuzdaki verilere erişmek için kullandığınız SELECT deyimi , FOR BROWSE anahtar sözcükleriyle bitmelidir. Gözatma modunu kullanmak için FOR BROWSE seçeneğini açtığınızda, geçici tablolar oluşturulur.
NO_BROWSETABLE seçeneğini kullanarak gözatma modunu açmak için aşağıdaki Transact-SQL deyimini çalıştırmanız gerekir:
SET NO_BROWSETABLE ONNO_BROWSETABLE seçeneğini açtığınızda, tüm SELECT deyimleri deyimlere FOR BROWSE seçeneği eklenmiş gibi davranır. Ancak NO_BROWSETABLE seçeneği, FOR BROWSE seçeneğinin sonuçları uygulamanıza göndermek için genellikle kullandığı geçici tabloları oluşturmaz.
Sql Server tablolarındaki verilere göz atma modunda dış birleşim deyimi içeren bir SELECT sorgusu kullanarak erişmeye çalıştığınızda ve dış birleştirme deyiminin iç tarafında bulunan tabloda benzersiz bir 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 dış birleşim deyimi içeren bir SELECT sorgusu kullanarak erişmeye çalışırsınız.
Dış birleştirme deyiminin iç tarafında bulunan tabloda benzersiz bir dizin 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 vetlefther ikisi de adlıtrighttek bir sütun içeren bir tablo oluşturunc1. 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) ; GOSeç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 ; GOSorguda
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 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 modunda tablolara erişmek için sorguyu SELECT çalıştırdıktan sonra, sorgunun SELECT sonuç kümesi sağ dış birleştirme deyiminin tanımı nedeniyle tablodaki NULL sütun için c1 iki tleft değer içerir. Bu nedenle, sonuç kümesinde tablodan NULL gelen değerleri ve sağ dış birleşim deyiminin NULL tanıttığı değerleri ayırt edemezsiniz. Sonuç kümesindeki NULL değerleri yoksaymak zorundaysanız yanlış sonuçlar alabilirsiniz.
Note
Benzersiz dizine dahil edilen sütunlar değerleri kabul NULL etmediyse, sonuç kümesindeki tüm NULL değerler sağ dış birleşim deyimi tarafından 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 Modu 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 Mode kullanma.
EXPLICIT
Sonuçta elde edilen XML ağacının şeklinin açıkça tanımlandığını belirtir. Bu mod kullanıldığında, istenen iç içe yerleştirme hakkında ek bilgilerin açıkça belirtilmesi için sorguların belirli bir şekilde yazılması 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. belirtilirse XMLDATA , belgeye XDR şeması eklenir.
Important
XMLDATA yönergesi kullanım dışıdır. RAW ve AUTO modları söz konusu olduğunda XSD oluşturma özelliğini kullanın. modunda yönergesi XMLDATAEXPLICIT için bir değişiklik yoktur. 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 FOR XML kullanan bir sorgu vermek için SQL Server Management Studio (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, XML özniteliklerine eşlenirler. Bu seçenek yalnızca ve RAW modlarında AUTOPATHdesteklenir. Daha fazla bilgi için bkz. FOR XML ile RAW Modu kullanma.
XSINIL
Sütun değerleri için xsi:nilözniteliği True olarak ayarlanmış bir öğenin NULL oluşturulduğunu belirtir. Bu seçenek yalnızca yönergesiyle ELEMENTS belirtilebilir. 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 ELEMENTS ile belirtin.
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ğlanırsa, 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 Modu'nu kullanma.
İKILI TABAN64
Sorgunun ikili verileri ikili base64 ile kodlanmış biçimde döndürdüğünü belirtir. ve RAW modunu kullanarak EXPLICIT ikili verileri aldığınızda, bu seçenek belirtilmelidir. Bu, modda varsayılandır AUTO .
TYPE
Sorgunun sonuçları xml türü olarak döndürdüğünü belirtir. Daha fazla bilgi için bkz. FOR XML Sorguları'nda TYPE Yönergesi.
ROOT [ ('KökName') ]
Sonuçta elde edilen XML'e tek bir üst düzey öğenin ekleneceğini belirtir. İsteğe bağlı olarak oluşturulacak kök öğe adını belirtebilirsiniz. İsteğe bağlı kök ad belirtilmezse, 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 sonuç kümesi istemciye xml türü olarak döndürülü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 AdventureWorks2022;
GO
SELECT p.BusinessEntityID, FirstName, LastName, PhoneNumber AS Phone
FROM Person.Person AS p
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
Fabric Veri Ambarı'nda sorgudaki FOR JSON son işleç olmalıdır ve bu nedenle alt sorgularda izin verilmemektedir.
JSON
JSON metni olarak biçimlendirilmiş bir sorgunun sonuçlarını döndürmek için FOR JSON belirtin. 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 (SQL Server) 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 Modu (SQL Server) ile 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 Modu (SQL Server) ile İç İçe JSON Çıktısı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, çıkış sorgu sonuçlarındaki değerler için NULL JSON özelliklerini içermez. Daha fazla bilgi ve örnek için bkz. INCLUDE_NULL_VALUES Seçeneği (SQL Server) ile JSON Çıkışına Null Değerler Ekleme.
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. KÖK Seçeneği (SQL Server) 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. WITHOUT_ARRAY_WRAPPER Seçeneği (SQL Server) ile JSON Çıkışından Köşeli AyraçLarı Kaldırma.
Daha fazla bilgi için bkz. FOR JSON (SQL Server) ile Sorgu Sonuçlarını JSON Olarak Biçimlendirme.