SQL Server 透過 FOR XML 子句原生支援將查詢結果輸出為 XML,提供 RAW、AUTO、EXPLICIT 三種模式,並支援 XMLDATA、ELEMENTS、BINARY BASE64 等選項,滿足不同整合需求。
[ FOR { XML { RAW | AUTO | EXPLICIT }
[ , XMLDATA ]
[ , ELEMENTS ]
[ , BINARY BASE64 ] } ]
每筆資料列產生一個 <row> 元素,欄位為屬性。結構扁平,適合簡單匯出。
SELECT Orders.OrderID, Orders.OrderDate, ProductID
FROM Orders, [Order Details]
WHERE Orders.OrderID = [Order Details].OrderID
ORDER BY Orders.OrderID
FOR XML RAW
根據資料表關聯自動產生巢狀 XML 階層,資料表名稱成為元素名稱,關聯欄位決定父子關係。
SELECT Orders.OrderID, Orders.OrderDate, ProductID
FROM Orders, [Order Details]
WHERE Orders.OrderID = [Order Details].OrderID
ORDER BY Orders.OrderID
FOR XML AUTO
提供完全控制權,但需在 SELECT 子句中手動指定 XML 結構(如 Tag、Parent、欄位別名等),語法複雜,適用於高度客製化輸出。
FOR XML 是 SQL Server 與 XML 整合的基石,但完整解決方案還需搭配 OPENXML(將 XML 載入資料表)、XML 模板檔案、IIS 虛擬目錄設定等。建議根據資料結構複雜度選擇模式:簡單匯出用 RAW,主從關係用 AUTO,複雜格式用 EXPLICIT。