Aracılığıyla paylaş


XML İÇİN (SQL Server)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Sorgu SELECT sonuçları satır kümesi olarak döndürür. İsteğe bağlı olarak sorguda yan tümcesini belirterek SQL sorgusunun FOR XML resmi sonuçlarını 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 deyiminde SELECT kullanılabilir. Alt sorgularda , FOR XMLINSERTve UPDATE deyimlerinde DELETEkullanılabilir. FOR XML atama deyimlerinde de kullanılabilir.

Yan FOR XML tümcesinde şu modlardan birini belirtirsiniz:

  • RAW
  • AUTO
  • EXPLICIT
  • PATH

modu, RAW deyimi tarafından <row> döndürülen satır kümesinde satır başına tek SELECT bir öğe oluşturur. İç içe sorgular yazarak XML hiyerarşisi FOR XML oluşturabilirsiniz.

modu, AUTO deyimin belirtilmesine göre buluşsal yöntemler kullanarak sonuçta elde edilen XML'de SELECT iç içe yerleştirme oluşturur. Oluşturulan XML'nin şekli üzerinde en az denetime sahipsiniz. İç içe sorgular FOR XML , mod buluşsal yöntemleri tarafından AUTO oluşturulan XML şeklinin ötesinde XML hiyerarşisi oluşturmak için 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. Modun EXPLICIT gücü, öznitelikleri ve öğeleri istediğiniz zaman karıştırmak, sarmalayıcılar ve iç içe karmaşık özellikler oluşturmak, alanla ayrılmış değerler (örneğin, özniteliğin OrderID sipariş kimliği değerleri listesi olabilir) ve karma içerik oluşturmaktır.

Ancak, yazma EXPLICIT modu sorguları zahmetli olabilir. Hiyerarşileri oluşturmak için modu kullanmak FOR XML yerine iç içe FOR XML RAW, AUTOveya PATH mod sorguları yazma gibi bazı yeni TYPE özellikleri ve EXPLICIT yönergesini kullanabilirsiniz. İç içe sorgular FOR XML , modu kullanarak EXPLICIT oluşturabileceğiniz herhangi bir XML üretebilir. Daha fazla bilgi için bkz . FOR XML sorgularında iç içe YERLEŞTIRILMIŞ FOR XML sorguları ve TYPE yönergesini kullanma.

Mod PATH , iç içe FOR XML sorgu özelliğiyle birlikte modun esnekliğini EXPLICIT 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 XML yan tümcesi ile FOR BROWSE kullanılan hiçbir seçim için geçerli değildir.

Örnekler

Aşağıdaki SELECT deyim veritabanındaki Sales.Customer ve Sales.SalesOrderHeader tablolarından AdventureWorks2025 bilgi alır. Bu sorgu, yan tümcesindeki AUTOFOR XML modu 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ı

Yan tümcesi olan bir SELECTFOR XML deyim sorguda dört parçalı bir ad belirttiğinde, sorgu yerel bilgisayarda yürütürken sonuçta elde edilen XML belgesinde sunucu adı döndürülmüyor. 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"/>