共用方式為


FOR XML(SQL Server)

SELECT 查詢會以數據列集的形式傳回結果。 您可以選擇性地藉由在查詢中指定 FOR XML 子句,以 XML 形式擷取 SQL 查詢的正式結果。 FOR XML 子句可用於最上層查詢和子查詢。 最上層 FOR XML 子句只能在 SELECT 語句中使用。 在子查詢中,FOR XML 可用於 INSERT、UPDATE 和 DELETE 語句。 它也可用於指派語句。

在 FOR XML 子句中,您可以指定下列其中一種模式:

  • 原始狀態

  • 自動

  • 明確的

  • 路徑

RAW 模式會針對 SELECT 語句所傳回的行集,每個行產生一個單一的<行>元素。 您可以撰寫巢狀 FOR XML 查詢來產生 XML 階層。

AUTO 模式會根據 SELECT 語句的指定方式,使用啟發式在生成的 XML 中建立巢狀結構。 您對產生的 XML 圖形擁有最少的控制。 巢狀 FOR XML 查詢可以撰寫,以生成超出 AUTO 模式所產生的 XML 結構的 XML 階層。

EXPLICIT 模式可讓您更充分掌控 XML 的形狀。 您可以在決定 XML 的形狀時混合屬性和元素。 它需要因查詢執行而產生之結果數據列集的特定格式。 此數據列集格式接著會對應至 XML 圖形。 EXPLICIT 模式的威力是將屬性和元素混合在一起、建立包裝函式和巢狀複雜屬性、建立以空格分隔的值(例如,OrderID 屬性可能有順序標識碼值的清單),以及混合的內容。

不過,撰寫 EXPLICIT 模式查詢可能會很麻煩。 您可以使用某些新的 FOR XML 功能,例如撰寫巢狀 FOR XML RAW/AUTO/PATH 模式查詢和 TYPE 指示詞,而不是使用 EXPLICIT 模式來產生階層。 巢狀 FOR XML 查詢可以產生任何您可以使用 EXPLICIT 模式產生的 XML。 如需詳細資訊,請參閱 使用巢狀 FOR XML 查詢 和在 FOR XML 查詢中使用 TYPE 指示詞

PATH 模式與巢狀 FOR XML 查詢功能一起,以更簡單的方式提供 EXPLICIT 模式的彈性。

這些模式只會針對其設定的查詢執行而生效。 它們不會影響任何後續查詢的結果。

FOR XML 子句不適用於與 FOR BROWSE 子句一起使用的任何選取範圍。

範例

下列 SELECT 語句會從 資料庫中的 Sales.CustomerSales.SalesOrderHeader 數據表 AdventureWorks2012 擷取資訊。 此查詢會在子句中指定FOR XML模式:

USE AdventureWorks2012  
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 子句和伺服器名稱

當具有 FOR XML 子句的 SELECT 語句指定查詢中的四部分名稱時,在本機電腦上執行查詢時,產生的 XML 檔中不會傳回伺服器名稱。 不過,當查詢在網路伺服器上執行時,伺服器名稱會以四部分名稱傳回。

例如,請考慮此查詢:

SELECT TOP 1 LastName  
FROM ServerName.AdventureWorks2012.Person.Person  
FOR XML AUTO  

ServerName 是本地伺服器時,查詢會傳回下列內容:

<AdventureWorks2012.Person.Person LastName="Achong" />  

ServerName 是網路伺服器時,查詢會傳回下列內容:

<ServerName.AdventureWorks2012.Person.Person LastName="Achong" />  

您可以藉由指定此別名來避免這種潛在的模棱兩可:

SELECT TOP 1 LastName  
FROM ServerName.AdventureWorks2012.Person.Person x  
FOR XML AUTO   

此查詢會傳回下列結果:

<x LastName="Achong"/>  

另請參閱

FOR XML 子句的基本語法
使用 FOR XML 的 RAW 模式
搭配 FOR XML 使用 AUTO 模式
使用 EXPLICIT 模式搭配 FOR XML
使用 PATH 模式搭配 FOR XML
OPENXML (SQL Server)
使用 WITH XMLNAMESPACES 將命名空間加入至查詢