Microsoft SQL Server 的 XML 支援經歷三個關鍵里程碑:
FOR XML(查詢結果輸出 XML)與 OPENXML(XML 解析為資料列集),以關鍵字擴展 T-SQL。xml 資料型別,支援 XSD 驗證、XQuery 操作、XML 索引,XML 成為一等公民。SELECT ProductID, ProductName
FROM Products
FOR XML AUTO;
輸出屬性中心式 XML 片段:
<Product ProductID="1" ProductName="Widget"/>
<Product ProductID="2" ProductName="Sprocket"/>
DECLARE @doc NVARCHAR(1000) =
'<Order OrderID="1011">
<Item ProductID="1" Quantity="2"/>
<Item ProductID="2" Quantity="1"/>
</Order>';
DECLARE @XMLDoc INT;
EXEC sp_xml_preparedocument @XMLDoc OUTPUT, @doc;
SELECT *
FROM OPENXML(@XMLDoc, 'Order/Item', 1)
WITH (OrderID INT '../@OrderID', ProductID INT, Quantity INT);
EXEC sp_xml_removedocument @XMLDoc;
需手動管理 DOM 文件控制代碼(sp_xml_preparedocument/removedocument),記憶體壓力大。
CREATE XML SCHEMA COLLECTION ProductSchema AS
N'
';
CREATE TABLE SalesOrders(
OrderID INT PRIMARY KEY,
OrderDate DATETIME,
CustomerID INT,
OrderNotes XML(ProductSchema) -- 類型化 XML 欄位
);
SELECT ProductID AS '@ProductID',
ProductName AS 'ProductName'
FROM Products
FOR XML PATH('Product'), ROOT('Products');
輸出元素中心式 XML,支援屬性(@)、巢狀結構、根元素自訂。
2008 版針對企業級場景的三大增強:
下篇將深入解析這三大增強的實作細節與範例。