XML可謂最新的數據存儲解決方案了。XML相比HTML給予了Web開發人員更大的編程靈活性。這種技術驅動開發機構嘗試把XML同自己的產品集成起來。微軟就是采取如此舉措的先驅者。微軟的幾乎所有產品中都能看到XML的身影。舉個例子:微軟是如何在其SQL Server產品線中集成XML的呢?下面咱們就來看看關鍵的FOR XML子句。
以XML的名義獲取信息
SQL Server和XML之間的集成首要一點就是根據SQL數據創建XML文件。XML文件的構造並不復雜,用簡單的腳本和ADO記錄集就可以輕松產生。這個任務雖然不算麻煩,但開發人員卻需要針對他們從服務器獲取的結果集合產生不同的腳本,或者編寫更為復雜的通用腳本。select語句則由此而配備了新的FOR XML子句。
該子句的語法如下所示:
[ FOR { XML { RAW | AUTO | EXPLICIT }
[ , XMLDATA ]
[ , ELEMENTS ]
[ , BINARY BASE64 ] } ]
FOR XML子句的XML模式由三種參數值表示:RAW、AUTO或者EXPLICIT。模式決定了結果XML的形式和組成。下面我們就更深入些地通過以下示例了解以上各個XML選項。
RAW示例
我們執行以下的SQL語句: SET ROWcount 3
select Orders.OrderID, Orders.OrderDate, ProductID
FROM Orders, [Order Details]
where Orders.OrderID = [Order Details].OrderID
ORDER BY Orders.OrderID
FOR XML RAW
執行後產生的結果如下: <row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="11"/>
<row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="42"/>
<row OrderID="10248" OrderDate="1996-07-04T00:00:00" ProductID="72"/>
我們執行以下的SQL語句:
‘結果限制為3條記錄。
SET ROWcount 3
select Orders.OrderID, Orders.OrderDate, ProductID
FROM Orders, [Order Details]
where Orders.OrderID = [Order Details].OrderID
ORDER BY Orders.OrderID
FOR XML AUTO
產生的結果如下所示:<Orders OrderID="10248" OrderDate="1996-07-04T00:00:00">
<Order_x0020_Details ProductID="11"/>
<Order_x0020_Details ProductID="42"/>
<Order_x0020_Details ProductID="72"/>
</Orders>