XML sorgular IÇIN iç içe geçmiş
Içinde SQL Server 2000, en üst düzeyinde yalnızca, bir SELECT sorgusu IÇIN XML yan tümce belirtebilirsiniz. Sonuç XML, ek işlem istemciye öncelikle döndürdü.Ile başlayan SQL Server 2005, ancak xml veri türü ve TYPE yönergesi IÇIN XML sorgularda ayrıca sunucuda işlenmek üzere FOR XML sorgu tarafından döndürülen XML etkinleştirin.
XML türü değişkenleri ile işleniyor
Sorgu sonucu IÇIN XML atayabileceğiniz bir XML değişken yazın veya XQuery sonucu sorgulamak için kullanın ve sonucunda atamak için bir XML türü değişkeni için daha fazla işlem.
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 değişkeninde döndürülen XML işleme @x, aşağıdakilerden birini kullanarak xml Veri, yöntem türü. Örneğin, almak ProductModelID değer kullanarak öznitelik Value() yöntem.
DECLARE @i int
SET @i = (SELECT @x.value('/row[1]/@ProductModelID[1]', 'int'))
SELECT @i
Aşağıdaki örnekte, FOR XML Sorgu sonucu olarak döndürülen bir xml yazın, çünkü TYPE Belirtilen yönergesini FOR XML yan tümce.
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=119 or ProductModelID=122
FOR XML RAW, TYPE,ROOT('myRoot')
Bu sonucu oluşur:
<myRoot>
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
<row ProductModelID="119" Name="Bike Wash" />
</myRoot>
Sonuç, çünkü xml Tür, aşağıdakilerden birini belirtebilirsiniz xml verileri doğrudan bu XML karşı yöntemleri, aşağıdaki sorguda gösterildiği gibi yazın. Sorguda, Query() yöntem (xml veri türü) <row> öğenin ilk <myRoot> öğe alt almak için 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]')
Bu sonucu oluşur:
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
Iç IÇIN XML sorgu sonuçlar için dış sorgular türü örnekleri xml döndürülüyor
Iç içe geçmiş yazabilirsiniz FOR XML iç sorgunun sonucu olarak döndürülür sorguları bir xml dış sorguya yazın. Örneğin:
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:
Tarafından iç oluşturulan XML FOR XML Sorguyu dış tarafından üretilen XML eklenir FOR XML.
Iç sorgunun belirtir TYPE yönerge. Bu nedenle, iç sorgu tarafından döndürülen XML verilerini olur. XML türü.TYPE yönergesini belirtilirse, iç sonucu FOR XML sorgu olarak döndürüldü nvarchar(max) ve XML verilerini entitized.
Sonuç XML verileri şeklini denetleme
FOR Nested XML sorgular sonuç XML verileri şeklini tanımlamakta daha fazla denetim verir.Içinde SQL Server 2000, RAW ve AUTO modu sorguları oluşturmak öznitelik-varsayılan merkezli bir XML. Örneğin:
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=122 or ProductModelID=119
FOR XML RAW
Bu öznitelik merkezli sonucudur:
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
<row ProductModelID="119" Name="Bike Wash" />
Alternatif olarak, WebForm1.aspx XML öğesi merkezli olarak alabilir ELEMENTS yönerge. Örneğin:
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=122 or ProductModelID=119
FOR XML RAW, ELEMENTS
Bu öğe merkezli sonucudur:
<row>
<ProductModelID>122</ProductModelID>
<Name>All-Purpose Bike Stand</Name>
</row>
<row>
<ProductModelID>119</ProductModelID>
<Name>Bike Wash</Name>
</row>
Içinde SQL Server 2000, bu nedenle, sorgu sonucunda merkezli öznitelik veya öğe merkezli bir XML seçmeniz gerekir. Ile başlayan SQL Server 2005, ancak kısmen olan XML oluşturmak için iç içe geçmiş FOR XML sorgularını kullanabilirsiniz öznitelik - merkezli ve kısmen öğe merkezli.
Iç içe geçmiş sorguları IÇIN XML özniteliği merkezli ve öğe merkezli bir XML belirtme hakkında daha fazla bilgi için bkz: XML sorgusu IÇIN iç içe FOR XML Query'ye karşılaştırılması ve XML ile iç içe FOR XML sorgular şekillendirme.
Içinde SQL Server 2000, yalnızca AÇıK modu kullanılarak sorgu yazarak eşdüzey gerçekleştirebilmesi. Ancak, bu hantal olabilir.Ile başlayan SQL Server 2005, eşi IÇIN XML sorgular, iç içe geçmiş OTOMATIK modu belirterek içeren XML hiyerarşileri oluşturabilirsiniz. Daha fazla bilgi için bkz:Bir iç içe AUTO modu sorgusu kullanarak, eşi oluşturuluyor.
Kullandığınız, hangi modu ne olursa olsun, iç içe geçmiş FOR XML sorgular sonuç XML şeklini tanımlayan, daha fazla denetim sağlar.Yerine, AÇıK modu sorguları kullanılabilir.
Örnekler
Aşağıdaki konular, iç içe geçmiş FOR XML sorgusuna örnekler sağlar.
XML sorgusu IÇIN iç içe FOR XML Query'ye karşılaştırılması
Tek düzeyli FOR XML sorguda yuvalanmış FOR XML sorgusuna karşılaştırır.Bu örnek, sorgu sonucunda merkezli öğe ve öznitelik merkezli bir XML belirleme konusunda gösterimini içerir.Bir iç içe AUTO modu sorgusu kullanarak, eşi oluşturuluyor
Bir iç içe geçmiş OTOMATIK modu sorgusu kullanarak eşdüzey nasıl gösterir.ASP.NET'te iç içe FOR XML sorgular kullanma
ASPX uygulama XML'DEN geri dönmek IÇIN XML nasıl kullanabileceğinizi gösterir SQL Server.XML ile iç içe FOR XML sorgular şekillendirme
Iç içe geçmiş FOR XML sorgularını tarafından oluşturulan bir XML belgesinin yapısını denetlemek için nasıl kullanılacağını gösterir. SQL Server.