ADO 2.5 雖宣稱支援 XML,但仍需額外轉換層。SQL Server 2000 可直接從資料庫輸出 XML,省去中介層,大幅提升分散式、資料集中式應用效能。
SELECT ... FOR XML 子句產生 XMLOPENXML 資料列集提供者寫入 XMLNorthwind)、實體路徑(如 C:\Inetpub\Wwwroot\Northwind)Northwind)瀏覽器輸入:
https://localhost/northwind?sql=SELECT * FROM Customers FOR XML AUTO&root=root
即可看到 XML 格式的客戶資料。
Dim objXML
Set objXML = CreateObject("SQLXML.SqlXmlConfig")
' ... 後續配置程式碼
| 模式 | 特性 | 適用場景 |
|---|---|---|
RAW | 每列產生一個 <row> 元素,欄位為屬性 | 簡單平面資料,效能最佳 |
AUTO | 依 JOIN 關係產生巢狀結構,表名為元素名 | 主從關係資料,無需複雜控制 |
EXPLICIT | 完全控制 XML 結構,需撰寫複雜的 SELECT 配合 TAG/PARENT | 高度客製化 XML 格式需求 |
SELECT C.CustomerID, C.CompanyName, O.OrderID, O.OrderDate
FROM Customers C
LEFT JOIN Orders O ON C.CustomerID = O.CustomerID
FOR XML AUTO, ROOT('Customers')
sp_xml_preparedocument:將 XML 文字解析為記憶體 DOM 樹,取得文件控制代碼OPENXML(@handle, xpath, flags):以資料列集形式公開 XML 節點WITH 子句定義欄位對應(欄位名、型別、XPath)INSERT/UPDATE/DELETE 操作資料列集sp_xml_removedocument:釋放記憶體(必須執行,否則洩漏)FOR XML RAW 搭配應用程式端組裝,效能優於 AUTO/EXPLICITSET NOCOUNT ON 減少網路封包sp_xml_preparedocument 記憶體使用,防止 OOMSQL Server 2000 的 XML 功能雖非最新標準(後續版本支援 XSD、XML 資料型別、XQuery),但在當時為資料庫原生 XML 處理奠定重要基礎。