Aracılığıyla paylaş


Otomatik mod kullanarak

Açıklandığı gibi xml for xml kullanma oluşturmak yoluyla, otomatik mod işlevi sorgu sonuçlar olarak iç içe xml öğeleri.Sorgu sonucu oluşturulan xml şekli üzerinde fazla denetime sahip sağlamaz.Otomatik modu sorguları basit hiyerarşileri oluşturmak istiyorsanız kullanışlıdır.Ancak, AÇIK modu kullanılarak ve path modu kullanılarak sağlamak daha fazla denetim ve esneklik karar verme şeklini xml sorgu sonucu.

Her tablo, hangi en az bir from yan tümce tümce tümcesinde sütun select yan tümce tümce tümcesinde listelenen, bir xml öğesi olarak temsil edilir.for xml yan tümce tümce tümcesinde isteğe bağlı öğeleri seçeneği belirtilirse, select yan tümce tümce tümcesinde listelenen sütunlar öznitelikleri veya öğesi için eşleştirilir.

xml hiyerarşisi sonuç XML öğeleri iç içe geçmiş tablo select yan tümce tümce tümcesinde belirlenen sütun tanımlanan sırasına göre tabanlı.Bu nedenle, hangi sütun adları select yan tümce tümce tümcesinde belirtilen sıra önemlidir.Tanımlanan ilk, en soldaki tablo xml belgesindeki üst öğesi oluşturur.İkinci olarak en soldaki tablo, sütunların select deyiminde tanımlanan, bir alt öğesi içinde en üst öğesi vb. oluşturur.

select yan tümce tümce tümcesinde listelenen sütun adı zaten önceden belirtilen bir sütunu select yan tümce tümce tümce tarafından tanımlanan tablo, sütun olarak eklenen bir öznitelik zaten, yeni bir hiyerarşi düzey açmak yerine oluşturulan öğenin.ÖĞELERİ seçeneği belirtilirse, sütun öznitelik olarak eklenir.

Örneğin, bu sorguyu yürütmek:

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 bir sonucudur:

<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ümce tümce tümcesinde aşağıdakilere dikkat edin:

  • Müşt MüşteriNo başvuran tablo.Bu nedenle, bir <Cust> öğesi oluşturulur ve MüşteriNo eklenir olarak kendi öznitelik.

  • İleri, üç sütun, OrderHeader.CustomerID, OrderHeader.SaleOrderID ve OrderHeader.Status, OrderHeader tablo başvurusu.Bu nedenle, bir <OrderHeader> öğesi bir alt öğesi eklenen <Cust> nitelikleri olarak öğe ve üç sütun eklenir <OrderHeader>.

  • Daha sonra Cust.CustomerType sütun Cust.CustomerID sütun tarafından önceden tanımlanan Cust tablo yeniden başvuruyor.Bu nedenle, hiçbir yeni öğe oluşturulur.Bunun yerine, CustomerType öznitelik eklenir <Cust> daha önce oluşturulmuş olan öğe.

  • Sorgu, tablo adları için diğer adlar belirtir.Bu adlar, karşılık gelen öğe adları olarak görünmektedir.

  • order by tüm çocuklar bir üst altında gruplandırmak için gereklidir.

select yan tümce tümce tümce içinde OrderHeader sütun belirtir dışında bu sorguyu önceki, benzer tablo Cust sütunlarda önce tablo.Bu nedenle, ilk <OrderHeader> öğesi oluşturulur ve sonra <Cust> alt öğe it. ekleniyor

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 bir sonucudur:

<OrderHeader CustomerID="1" SalesOrderID="43860" Status="5">
  <Cust CustomerID="1" CustomerType="S" />
</OrderHeader>
...

ÖĞELERİ seçeneği for xml yan tümce tümce tümcesinde eklediyseniz, öğe merkezli bir xml döndürülür.

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 bir sonucudur:

<Cust>
  <CustomerID>1</CustomerID>
  <CustomerType>S</CustomerType>
  <OrderHeader>
    <CustomerID>1</CustomerID>
    <SalesOrderID>43860</SalesOrderID>
    <Status>5</Status>
  </OrderHeader>
   ...
</Cust>
...

Bu sorgu, Müşteri Kimliği değerleri oluşturma sonraki bir satırdan karşılaştırılır <Cust> , öğelerini MüşteriNo birincil anahtarı olduğundan tablo.CustomerID tablo için birincil anahtar olarak tanımlanması durumunda, tüm sütun değerleri (CustomerID, CustomerType bu sorgu) bir satırdan diğerine karşılaştırılır.Değerleri farklıysa, yeni bir <Cust> öğe ekleniyor xml.

Bu sütun değerleri karşılaştırmak için sütun türünü olduğunda karşılaştırırken metin, ntext, Görüntü, veya xml, xml değerleri farklı ve değil karşılaştırıldığında varsayılmaktadır için olsa aynı olabilir.Büyük nesneler karşılaştırma desteklenen olmasıdır.Öğeleri seçili her satır için sonuç eklenir.Not Bu sütun (n)varchar(max) ve varbinary(max) karşılaştırılır.

select yan tümce tümce tümcesi bir sütunda örneğinde bir toplu sütunu veya hesaplanan sütun gibi from yan tümce tümce tümcesinde tanımlanan tabloları ile ilişkili olamaz, sütun, içteki iç içe xml belgede eklenir düzey listesinde karşılaşıldığında yerinde.Böyle bir sütunu ilk sütun olarak select yan tümce tümce tümcesinde görünür sütun üst öğesine eklenir.

select yan tümce tümce tümcesinde yıldız işareti (*) joker karakter belirtilirse, iç içe sorgu altyapısı tarafından döndürülen satırları sipariş alınarak, daha önce açıklandığı gibi aynı şekilde belirlenir.

Bu Bölümde

Aşağıdaki konular, otomatik mod hakkında daha fazla bilgi sağlar: