OTOMATIK mod kullanma
' De açıklandığı gibi FOR XML kullanan XML oluşturmaAUTO modu, iç içe geçmiş XML öğeleri sorgu sonuçlar döndürür. Bu, bir sorgu sonucu oluşturulan XML şekli üzerinde denetim sağlamaz.AUTO modu sorgulamalarının basit hiyerarşileri oluşturmak istiyorsanız kullanışlıdır.Ancak, AÇıK modunu kullanma ve yol modunu kullanma daha fazla denetim ve bir sorgu sonucu XML'DEN şeklini seçme esneklik sağlar.
Her tablo FROM yan tümce, en az bir sütun SELECT yan tümcende listelenen bir XML öğesi temsil edilir.Sütunları SEÇME listelenen yan tümce isteğe bağlı ÖĞELERI seçeneği IÇIN XML içinde belirtilen, özniteliklerinin veya alt öğeleri, eşlenen yan tümce.
XML hiyerarşisi, sonuç XML öğeleri iç içe geçmiş tabloları SEÇME içinde belirtilen sütun ile tanımlanan sırasını temel yan tümce.Bu nedenle, hangi sütun adlarını SEÇME belirtilen sırada yan tümce önemlidir.Ilk, en soldaki tablo, tanımlanan formlar üst sonuç XML belgesindeki öğedir.SELECT deyimindeki sütun ile tanımlanan ikinci en soldaki tablo, üst öğede vb. içinde bir alt öğesi oluşturur.
Listelenen bir sütun adı, SELECT yan tümcesi ise bir tablo, zaten önceden belirtilen bir sütunu SELECT yan tümcesinde tanımlanır, sütun özniteliği zaten, yeni bir hiyerarşi düzeyini açmak yerine oluşturulan öğe olarak eklenir.ÖĞELERI seçenek belirtilmezse, sütun, öznitelik olarak eklenir.
Örneğin, bu sorguyu yürütün:
SELECT Cust.CustomerID,
OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.Status,
Cust.CustomerType
FROM Sales.Customer Cust, Sales.SalesOrderHeader OrderHeader
WHERE Cust.CustomerID = OrderHeader.CustomerID
ORDER BY Cust.CustomerID
FOR XML AUTO
Bu kısmi kaynaklanır:
<Cust CustomerID="1" CustomerType="S">
<OrderHeader CustomerID="1" SalesOrderID="43860" Status="5" />
<OrderHeader CustomerID="1" SalesOrderID="44501" Status="5" />
<OrderHeader CustomerID="1" SalesOrderID="45283" Status="5" />
<OrderHeader CustomerID="1" SalesOrderID="46042" Status="5" />
</Cust>
...
SELECT yan tümcesinde aşağıdakilere dikkat edin:
MüşteriNo Müşteri tablosuna başvurur.Bu nedenle, bir <Cust> öğe oluşturulur ve MüşteriNo, öznitelik olarak eklenir.
Sonraki üç sütun, OrderHeader.CustomerID, OrderHeader.SaleOrderID ve OrderHeader.Status, OrderHeader tablo başvurusu.Bu nedenle, bir <OrderHeader> öğe bir alt öğesi eklenen <Cust> öğe ve üç sütun özniteliklerini eklenir <OrderHeader>.
Ardından, yeniden Cust.CustomerType sütun Cust.CustomerID sütuna göre önceden tanımlanan özel tablo başvuruyor.Bu nedenle, yok bir yeni öğe oluşturulur.Bunun yerine, CustomerType özniteliği eklenir <Cust> daha önce oluşturulmuş olan öğe.
Sorguya tablo adları için diğer ad belirtir.Bu adlar, karşılık gelen öğe adları görünür.
ORDER BY bir üst altındaki tüm alt gruplandırmak için gereklidir.
SELECT yan tümce içinde OrderHeader sütunları belirtir, ancak bu sorguyu önceki bir benzer tablo Müşt sütunlarda önce tablo.Bu nedenle, ilk <OrderHeader> öğe oluşturulur ve <Cust> alt öğe için eklenir.
select OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.Status,
Cust.CustomerID,
Cust.CustomerType
from Sales.Customer Cust, Sales.SalesOrderHeader OrderHeader
where Cust.CustomerID = OrderHeader.CustomerID
for xml auto
Bu kısmi kaynaklanır:
<OrderHeader CustomerID="1" SalesOrderID="43860" Status="5">
<Cust CustomerID="1" CustomerType="S" />
</OrderHeader>
...
ÖĞELERI seçeneği IÇIN XML biçiminde eklenmiş yan tümce, öğe merkezli bir XML döndürdü.
SELECT Cust.CustomerID,
OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.Status,
Cust.CustomerType
FROM Sales.Customer Cust, Sales.SalesOrderHeader OrderHeader
WHERE Cust.CustomerID = OrderHeader.CustomerID
ORDER BY Cust.CustomerID
FOR XML AUTO, ELEMENTS
Bu kısmi kaynaklanır:
<Cust>
<CustomerID>1</CustomerID>
<CustomerType>S</CustomerType>
<OrderHeader>
<CustomerID>1</CustomerID>
<SalesOrderID>43860</SalesOrderID>
<Status>5</Status>
</OrderHeader>
...
</Cust>
...
Bu sorguda MüşteriNo değerleri bir satırdan oluşturma sonraki karşılaştırılır <Müşteri> öğeleri, MüşteriNo birincil anahtar olduğundan tablo. Tablo için birincil anahtar olarak MüşteriNo tanımlanır, tüm sütun değerleri (MüşteriNo, bu sorguda CustomerType), bir satırdan sonraki karşılaştırılır.Değerleri, yeni bir farklıysa <Müşteri> öğe için XML eklenir.
Karşılaştırılacak sütun türü olduğunda, bu sütunun değerleri karşılaştırırken Text, ntext, Image, or XMLFOR XML değerleri farklı olan ve olmayan karşılaştırılan olarak kabul eder rağmen aynı olabilir.Büyük nesneler karşılaştırma desteklenip desteklenmediği olmasıdır.Öğeleri seçili her satır için sonuç eklenir.Not Bu sütunları (n)varchar(max) and varbinary(max) karşılaştırılır.
Bir sütunu,'SELECT [NULL]'de yan tümce FROM içinde tanımlanan tablolardan herhangi birini ile ilişkilendirilemez yan tümce, listede karşılaşıldığında bir toplamak sütunu veya hesaplanan sütun olması durumunda, sütun yerinde Acınızı yuvalanma düzeyinde XML belgesindeki eklendiğinde.sütun SEÇME ilk sütunda görünüyorsa yan tümce, sütunun üst öğesine eklenir.
Yıldız (*) joker karakterini SEÇME belirtilirse yan tümce, iç içe daha önce açıklandığı şekilde sorgu motoru tarafından döndürülen satırları siparişteki bağlı olarak belirlenir.
Bu Bölümde
Aşağıdaki konular, AUTO modu hakkında daha fazla bilgi sağlar: