Aracılığıyla paylaş


FOR XML kullanan XML oluşturma

Bir SELECT sorgusu döndürür sonuçlar olarak satır kümesi.Isteğe bağlı olarak, bir SQL sorgusu resmi sonuçlarını sorguda FOR XML yan tümce belirterek XML olarak alabilirsiniz.FOR XML yan tümce, üst düzey sorgular ve alt sorgularda kullanılabilir.En üst düzey IÇIN XML yan tümce, yalnızca deyim içinde kullanılabilir.Alt sorgular IÇIN XML INSERT, UPDATE kullanılabilir ve deyimleri DELETE.Atama deyimleri de kullanılabilir.

Bir FOR XML yan tümce bu modlardan birini belirtin:

  • HAM

  • OTOMATİK

  • AÇIK

  • Yol

Tek bir RAW modunda oluşturur <satır kümesi kümesi> deyim tarafından döndürülen satır kümesi kümesi satır kümesi kümesi başına öğesi. Iç içe geçmiş FOR XML sorgularını yazarak, XML hiyerarşisi oluşturabilirsiniz.

OTOMATIK modunu, SELECT deyiminde belirtilen yol üzerinde temel buluşsal yöntemlerini kullanarak, sonuç XML içinde iç içe geçirilmesi oluşturur.Oluşturulan XML şekli üzerinde en alt düzeyde bir denetiminiz vardır.Iç içe geçmiş sorguları IÇIN XML AUTO modu buluşsal yöntemlerini tarafından üretilen XML şeklin dışına XML hiyerarşisi oluşturmak için yazılabilir.

AÇıK mod, XML, şekli üzerinde daha fazla denetim sağlar.Öznitelikleri karıştırabilirsiniz ve XML şeklini seçme öğeleri altında olur.Belirli bir biçimde için oluşturulan sorgu yürütme nedeniyle ortaya çıkan satır kümesi gerektirir.Bu satır kümesi kümesi biçimi, daha sonra XML şekle eşleştirilir.Güç AÇıK modunun olan öznitelikleri ve olacak en öğeleri karıştırmak sarýcýlarý ve iç içe geçmiş karmaşık özelliklerini, değerleri boşlukla ayrılmış oluşturmak için (örneğin, Sipariş Kimliği özniteliği siparişi teşhis kodu (ID) değerleri listesini olabilir) ve içeriği karma.

Ancak, yazma AÇıK modu sorgulamalarının hantal olabilir.Iç içe geçmiş XML RAW/AUTO/yol FOR modu sorgulamalarının ve hiyerarşileri oluşturmak için AÇıK modu kullanmak yerine TÜRÜ yönergesini, yazma gibi yeni FOR XML özellikleri, bazıları da kullanabilirsiniz.Iç içe geçmiş sorguları IÇIN XML AÇıK modu kullanarak oluşturabileceğiniz bir XML oluşturabilir.Daha fazla bilgi için bkz: XML sorgular IÇIN iç içe geçmiş ve TYPE yönergesini FOR XML sorgulardaki.

Iç içe geçmiş FOR XML sorgu özelliği ile birlikte yol modu, daha basit bir biçimde AÇıK modunun esnekliği sağlar.

Bu modlar, yalnızca oldukları sorgu yürütme için etkin durumda küme.Herhangi bir sonraki sorguların sonuçlarını etkilemez.

COMPUTE BY ve GÖZATMA yan tümceleri IÇIN

XML, COMPUTE BY veya FOR BROWSE yan tümce ile birlikte kullanılan herhangi bir seçimi için geçersiz FOR.Örneğin, aşağıdaki hata neden olur:

SELECT TOP 5 SalesOrderID, UnitPrice 
FROM Sales.SalesOrderDetail 
ORDER BY SalesOrderID COMPUTE SUM(UnitPrice) BY SalesOrderID
FOR XML AUTO

FOR XML yan tümce ve sunucu adları

Bir FOR XML yan tümce içeren bir deyim, sorguda four-part bir ad belirtir, sunucu adı yerel bilgisayardaki bir sorgu yürütüldüğünde sonuç XML belgesinde döndürülmez.Ancak, bir ağ sunucusunda bir sorgu yürütüldüğünde, sunucu adını four-part adı olarak döndürülür.

Örneğin, bu sorguyu göz önünde bulundurun:

SELECT TOP 1 LastName
FROM ServerName.AdventureWorks.Person.Contact
FOR XML AUTO

Ne zaman ServerName yerel bir sunucu, aşağıdaki sorguyu verir:

<AdventureWorks.Person.Contact LastName="Achong" />

Ne zaman ServerName bir ağ sunucusu için aşağıdaki sorguyu verir:

<ServerName.AdventureWorks.Person.Contact LastName="Achong" />

Bu diğer ad belirterek bu olası belirsizlik kaçınılması:

SELECT TOP 1 LastName
FROM ServerName.AdventureWorks.Person.Contact x
FOR XML AUTO 

Bu sorgu aşağıdaki döndürür:

<x LastName="Achong"/>