SQL Server和XML的集成(1)
2024-08-31 00:48:27
供稿:網友
 
sql server和xml的集成 
作者: builder.com
wednesday, june 19 2002 10:11 am 
xml可謂最新的數據存儲解決方案了。xml相比html給予了人員更大的編程靈活性。這種新技術驅動開發機構嘗試把xml同自己的產品集成起來。微軟就是采取如此舉措的先驅者。微軟公司在開發internet產品的時候一度慢慢騰騰,現在可就不同了。最近一位微軟公司的高級職員就這樣說:“你要給我們一刀,傷口里出來的盡是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"/>
auto示例
我們執行以下的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>
explicit示例
explicit模式給予查詢編程人員對產生xml的完全控制能力。然而這種控制力度卻要價不菲:你得編寫每一查詢以便sql語句能包含xml信息。
有關的語法很復雜,而且超出了本文的討論范圍。[ , xmldata ] [ , elements ] [ , binary base64 ] 是相應的可選參數。