SQL Server和XML的整合

2021-04-06 17:07:47 字數 1813 閱讀 6716

xml相比html給予了web開發人員更大的程式設計靈活性。這種技術驅動開發機構嘗試把xml同自己的產品整合起來。微軟就是採取如此舉措的先驅者。微軟的幾乎所有產品中都能看到xml的身影。舉個例子:微軟是如何在其sql server產品線中整合xml的呢?下面咱們就來看看關鍵的for xml子句。

以xml的名義獲取資訊

sql server和xml之間的整合首要一點就是根據sql資料建立xml檔案。xml檔案的構造並不複雜,用簡單的指令碼和ado記錄集就可以輕鬆產生。這個任務雖然不算麻煩,但開發人員卻需要針對他們從伺服器獲取的結果集合產生不同的指令碼,或者編寫更為複雜的通用指令碼。select 語句則由此而配備了新的for xml子句。

該子句的語法如下所示:

[ for

[ , 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

執行後產生的結果如下:

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

產生的結果如下所示:

explicit示例

explicit模式給予查詢程式設計人員對產生xml的完全控制能力。然而這種控制力度卻要價不菲:你得編寫每一查詢以便sql語句能包含xml資訊。

有關的語法很複雜,而且超出了本文的討論範圍。[ , xmldata ] [ , elements ] [ , binary base64 ] 是相應的可選引數。

可選元素

示例可以讓我們對各種設定的內部工作機理有更多的了解,下面我們就進一步研究下for xml語句的可選元素xmldata。

如果你設定該選項,那麼xml-data schema就會包含在結果集合裡。以下是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 auto, xmldata

以上的sql語句產生以下結果:

…elements

elements選項指示各資料列作為子元素而非屬性返回。假如你採用auto模式就可以只採用該選項。

binary base64

使用該選項表示你希望採用base64編碼格式表示二進位制資料。

SQL Server和XML的整合

xml相比html給予了web開發人員更大的程式設計靈活性。這種技術驅動開發機構嘗試把xml同自己的產品整合起來。微軟就是採取如此舉措的先驅者。微軟的幾乎所有產品中都能看到xml的身影。舉個例子 微軟是如何在其sql server產品線中整合xml的呢?下面咱們就來看看關鍵的for xml子句。以x...

說說SQL SERVER的xml索引

這個我主要是對它的三種輔助索引有點迷惑,不過仔細地讀了幾遍sql聯機叢書之後,我基本上明白了吧!在這裡做個簡單的記述,如果以後還暈的時候,看看就應該能明白過來了。sql server的xml索引分為四種,主索引,還有三種輔助索引,path index,value index,property ind...

SQL Server 將資料匯出為XML和Json

有時候需要一次性將sql server中的資料匯出給其他部門的也許進行關聯或分析,這種需求對於ssis來說當然是非常簡單,但很多時候僅僅需要一次性匯出這些資料而建立乙個ssis包就顯得小題大做,而sql server的匯入匯出工具其中bug還是蠻多的,最簡單的辦法是bcp。在sql server 2...