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ı
Sorgu SELECT sonuçları satır kümesi olarak döndürür.
FOR XML yan tümcesini sorguda belirterek, bir SQL sorgusunun biçimsel sonuçlarını isteğe bağlı olarak XML olarak alabilirsiniz.
FOR XML yan tümcesi üst düzey sorgularda ve alt sorgularda kullanılabilir. Üst düzey FOR XML yan tümcesi yalnızca SELECT ifadesinde kullanılabilir. Alt sorgularda, FOR XML, INSERT, UPDATE ve DELETE deyimlerinde kullanılabilir.
FOR XML atama deyimlerinde de kullanılabilir.
Yan FOR XML tümcesinde şu modlardan birini belirtirsiniz:
RAWAUTOEXPLICITPATH
RAW modu, SELECT deyimi tarafından döndürülen satır kümesindeki her satır için tek bir <row> öğesi oluşturur. İç içe sorgular yazarak XML hiyerarşisi FOR XML oluşturabilirsiniz.
AUTO modu, SELECT deyiminin nasıl belirtildiğine dayanan buluşsal yöntemleri kullanarak ortaya çıkan XML'de iç içe yapı oluşturur. Oluşturulan XML'nin şekli üzerinde en az denetime sahipsiniz. İç içe FOR XML sorguları, AUTO modu buluşsal yöntemlerinin oluşturduğu XML yapısının ötesinde XML hiyerarşisi oluşturacak şekilde yazılabilir.
Mod, EXPLICIT XML'nin şekli üzerinde daha fazla denetime olanak tanır. XML'nin şekline karar verirken istediğiniz zaman öznitelikleri ve öğeleri karıştırabilirsiniz. Sorgu yürütme nedeniyle oluşturulan sonuçta elde edilen satır kümesi için belirli bir biçim gerektirir. Bu satır kümesi biçimi daha sonra XML şekline eşlenir.
EXPLICIT modunun gücü; öznitelikleri ve öğeleri istenildiği gibi karıştırabilmesi, sarmalayıcılar ve iç içe geçmiş karmaşık özellikler oluşturabilmesi, boşlukla ayrılmış değerler (örneğin, OrderID özniteliği sipariş kimliği değerlerinin bir listesini içerebilir) ve karma içerik üretebilmesidir.
Ancak, EXPLICIT modu sorgularını yazmak zahmetli olabilir. Hiyerarşileri oluşturmak için EXPLICIT modu yerine, iç içe FOR XML RAW, AUTO veya PATH mod sorguları yazmak ve TYPE yönergesini kullanmak gibi bazı yeni FOR XML özelliklerinden yararlanabilirsiniz. İç içe FOR XML sorguları, EXPLICIT modunu kullanarak oluşturabileceğiniz her türlü XML'yi üretebilir. Daha fazla bilgi için bkz. İç içe FOR XML sorgularını kullanma ve FOR XML sorgularında TYPE yönergesi.
PATH modu, iç içe geçmiş FOR XML sorgulama özelliğiyle birlikte, EXPLICIT modunun esnekliğini daha basit bir şekilde sağlar.
Bu modlar yalnızca ayarlandıkları sorgunun yürütülmesi için geçerlidir. Bunlar, sonraki sorguların sonuçlarını etkilemez.
FOR BROWSE ifadesiyle kullanılan hiçbir seçim için FOR XML geçerli değildir.
Örnekler
Aşağıdaki SELECT ifade, AdventureWorks2025 veritabanındaki Sales.Customer ve Sales.SalesOrderHeader tablolarından bilgileri alır. Bu sorgu, FOR XML yan tümcesinde AUTO modunu belirtir:
USE AdventureWorks2022;
GO
SELECT Cust.CustomerID,
OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.STATUS
FROM Sales.Customer Cust
INNER JOIN Sales.SalesOrderHeader OrderHeader
ON Cust.CustomerID = OrderHeader.CustomerID
FOR XML AUTO;
FOR XML yan tümcesi ve sunucu adları
FOR XML yan tümcesi içeren bir SELECT deyimi sorguda dört parçalı bir ad belirttiğinde, sorgu yerel bilgisayarda yürütüldüğünde ortaya çıkan XML belgesinde sunucu adı döndürülmez. Ancak, sorgu bir ağ sunucusunda yürütülürken sunucu adı dört parçalı ad olarak döndürülür.
Örneğin, şu sorguyu göz önünde bulundurun:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2022.Person.Person
FOR XML AUTO;
Yerel sunucu: Yerel sunucu olduğunda ServerName , sorgu aşağıdaki metni döndürür:
<AdventureWorks2022.Person.Person LastName="Achong" />
Ağ sunucusu: Bir ağ sunucusu olduğunda ServerName , sorgu aşağıdaki metni döndürür:
<ServerName.AdventureWorks2022.Person.Person LastName="Achong" />
Belirsizlikten kaçının: Bu diğer ad belirtilerek bu olası belirsizlik önlenebilir:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2022.Person.Person x
FOR XML AUTO;
Şimdi kesinleştirilmiş sorgu aşağıdaki metni döndürür:
<x LastName="Achong"/>