Iç içe for xml sorgular kullanma
İle başlayan SQL Server 2005, xmlveri türü ve type Direktif for xml sorguları hem sunucu hem de istemci işleme for xml sorgu tarafından döndürülen xml etkinleştirin.
XML türü değişkenleri ile işleme
for xml sorgu sonucu atayabileceğiniz bir xml yazın değişkeni veya XQuery sonucu sorgulamak için kullanın ve bu sonucu atama 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şleyebilir @x, birini kullanarak xmlveri türü yöntemleri. Örneğin, sen-ebilmek geri almak ProductModelIDöznitelik değeri kullanarak value() yöntemi.
DECLARE @i int
SET @i = (SELECT @x.value('/row[1]/@ProductModelID[1]', 'int'))
SELECT @i
Aşağıdaki örnekte, FOR XMLsorgu sonucu olarak döndürülen bir xmlyazın, çünkü TYPEyönergesi içinde belirtilen FOR XMLtümcesi.
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID=119 or ProductModelID=122
FOR XML RAW, TYPE,ROOT('myRoot')
Sonuç şudur:
<myRoot>
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
<row ProductModelID="119" Name="Bike Wash" />
</myRoot>
Çünkü sonuç, xmltürü, birini belirtebilirsiniz xmlveri türü yöntemleri doğrudan karşı bu xml aşağıdaki sorgu gösterildiği gibi. Sorgu, query() yöntemi (xml veri türü) ilk almak için kullanılan <row> öğe alt <myRoot> öğesi.
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ç şudur:
<row ProductModelID="122" Name="All-Purpose Bike Stand" />
İç for xml sorgu sonuçları xml türü örnekleri olarak dış sorguları döndüren
Sen-ebilmek yazmak iç içe FOR XMLburada iç sorgunun sonucu olarak döndürülür sorgular bir xmldış sorgu türüne. Ö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 oluşturulan xml FOR XMLdış tarafından oluşturulan xml sorgu eklenir FOR XML.
İç sorgunun belirtir TYPEyönergesi. Bu nedenle, iç sorgu tarafından döndürülen xml veri olduğunu xml türü. type yönergesi belirtilmezse, iç sonucu FOR XMLsorgu olarak döndürülen nvarchar(max)ve xml verilerini entitized.
Sonuç xml verileri şeklini denetleme
İç içe for xml sorgular sonuç xml verileri şeklini tanımlayan daha fazla denetim sağlar. Kısmen özniteliği merkezli ve kısmen öğe merkezli bir xml oluşturmak için iç içe for xml sorguları kullanabilirsiniz.
Özniteliği merkezli ve öğe merkezli bir xml ile iç içe for xml sorguları belirtme hakkında daha fazla bilgi için xml sorgu için iç içe for xml sorgu için karşılaştırıldığındave Şekil xml ile iç içe for xml sorguları.
xml sorgu için iç içe auto modu belirterek kardeşleri içeren xml hiyerarşileri oluşturabilirsiniz. Daha fazla bilgi için, bkz. Kardeşleri ile iç içe auto modu sorgusu oluşturmak.
Kullandığınız hangi modu ne olursa olsun, sonuç xml şekli açıklayan daha fazla kontrol için iç içe for xml sorguları sağlar. Açık modu sorguları yerine kullanılabilirler.
Örnekler
Aşağıdaki konular, iç içe for xml sorguları örnekleri sağlar.
xml sorgu için iç içe for xml sorgu için karşılaştırıldığında
Tek düzeyli for xml sorgu için iç içe for xml sorgu karşılaştırır. Bu örnek, sorgu sonucu olarak özniteliği merkezli ve öğe merkezli bir xml nasıl bir gösteri içerir.Kardeşleri ile iç içe auto modu sorgusu oluşturmak
Iç içe auto modu sorgusu kullanarak eşi üretmek nasıl gösterirIç içe for xml sorguları asp kullanın.NET
aspx uygulama xml dönmek için for xml nasıl kullanabileceğiniz gösterilmektedir SQL Server.Şekil xml ile iç içe for xml sorguları
Tarafından oluşturulan bir xml belgesinin yapısını denetlemek için iç içe for xml sorgular kullanın gösterilmiştir SQL Server.