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 veritabanı
xml veri türü ve FOR XML sorgularındaki TYPE yönergesi FOR XML sorguları tarafından döndürülen XML'in hem sunucuda hem de istemcide işlenmesini sağlar.
Xml türü değişkenleriyle işleme
FOR XML sorgu sonucunu bir xml türü değişkenine atayabilir veya XQuery kullanarak sonucu sorgulayabilir ve daha fazla işlem için bu sonucu bir xml türü değişkenine atayabilirsiniz.
DECLARE @x xml
SET @x=(SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=122 or ProductModelID=119
FOR XML RAW, TYPE)
SELECT @x
-- Result
--<row ProductModelID="122" Name="All-Purpose Bike Stand" />
--<row ProductModelID="119" Name="Bike Wash" />
Ayrıca @x veri türü yöntemlerinden birini kullanarak değişkeninde döndürülen XML'yi işleyebilirsiniz. Örneğin, ProductModelIDvalue() yöntemini kullanarak öznitelik değerini alabilirsiniz.
DECLARE @i int;
SET @i = (SELECT @x.value('/row[1]/@ProductModelID[1]', 'int'));
SELECT @i;
Aşağıdaki örnekte, FOR XML yönergesi yan tümcesinde belirtildiğinden, TYPE sorgu sonucu FOR XML türü olarak döndürülür.
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=119 or ProductModelID=122
FOR XML RAW, TYPE,ROOT('myRoot');
Sonuç şu şekildedir:
<myRoot>
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
<row ProductModelID="119" Name="Bike Wash" />
</myRoot>
Sonuç xml türünde olduğundan, aşağıdaki sorguda gösterildiği gibi xml veri türü yöntemlerinden birini doğrudan bu XML'ye karşı belirtebilirsiniz. Sorguda, öğesinin ilk <row> öğesi alt öğesini almak için <myRoot> kullanılır.
SELECT (SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=119 or ProductModelID=122
FOR XML RAW, TYPE,ROOT('myRoot')).query('/myRoot[1]/row[1]');
Sonuç şu şekildedir:
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
İç FOR XML sorgu sonuçlarını dış sorgulara xml türü örnekleri olarak döndürme
İç sorgunun sonucunun dış sorguya FOR XML türü olarak döndürüldüğü iç içe sorgular yazabilirsiniz. Mesela:
SELECT Col1,
Col2,
( SELECT Col3, Col4
FROM T2
WHERE T2.Col = T1.Col
...
FOR XML AUTO, TYPE )
FROM T1
WHERE ...
FOR XML AUTO, TYPE;
Önceki sorgudan aşağıdakilere dikkat edin:
İç
FOR XMLsorgusu tarafından oluşturulan XML, dışFOR XMLtarafından oluşturulan XML'ye eklenir.İç sorgu
TYPEyönergesini belirtir. Bu nedenle, iç sorgu tarafından döndürülen XML verileri xml türündedir. TYPE yönergesi belirtilmezse, içFOR XMLsorgusunun sonucu nvarchar(max) olarak döndürülür ve XML verileri oluşturulur.
Sonuçta elde edilen XML verilerinin şeklini denetleme
İÇ içe GEÇMIŞ FOR XML sorguları, sonuçta elde edilen XML verilerinin şeklini tanımlama konusunda size daha fazla denetim sağlar. Kısmen öznitelik merkezli ve kısmen öğe merkezli XML oluşturmak için iç içe FOR XML sorgularını kullanabilirsiniz.
Hem öznitelik merkezli hem de öğe merkezli XML'i iç içe geçmiş FOR XML sorguları ile belirtme hakkında daha fazla bilgi için bkz. FOR XML Sorgusu İç İçe FOR XML Sorgusu ile Karşılaştırıldı ve İç İçte FOR XML Sorguları ile XML'i Şekillendirme.
XML sorguları için iç içe auto modu belirterek eşdüzeyleri içeren XML hiyerarşileri oluşturabilirsiniz. Daha fazla bilgi için bkz. İç İçe OTO Mod Sorgusu ile Kardeş Oluşturma.
Hangi modu kullandığınızdan bağımsız olarak iç içe GEÇMIŞ FOR XML sorguları, sonuçta elde edilen XML'nin şeklini açıklama konusunda daha fazla denetim sağlar. BUNLAR, AÇIK mod sorguları yerine kullanılabilir.
Örnekler
Aşağıdaki konular iç içe FOR XML sorgularının örneklerini sağlar.
XML Sorgusu için İç İçe GEÇMIŞ FOR XML Sorgu Karşılaştırıldı
Tek düzeyli FOR XML sorgusunu iç içe yerleştirilmiş for XML sorgusuyla karşılaştırır. Bu örnek, sorgunun sonucu olarak hem öznitelik merkezli hem de öğe merkezli XML'nin nasıl belirtileceğini gösteren bir tanıtım içerir.İç İçe Otomatik Mod Sorgu ile EşDüzeyLer Oluşturma
İç içe AUTO mod sorgusu kullanarak kardeş öğeler oluşturma yöntemlerini gösterir.ASP.NET'de İç İçe FOR XML Sorguları Kullanın
BIR ASPX uygulamasının SQL Server'dan XML döndürmek için FOR XML'yi nasıl kullanabileceğini gösterir.İç İçe FOR XML Sorgularıyla XML'i Şekillendirme
SQL Server tarafından oluşturulan xml belgesinin yapısını denetlemek için iç içe GEÇMIŞ FOR XML sorgularının nasıl kullanılacağını gösterir.