程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2008中有關XML的新功能

SQL Server 2008中有關XML的新功能

編輯:關於SqlServer

1 導言

Microsoft 在Microsoft SQL Server 2000中推出了與XML相關的功能以及Transact-SQL 關鍵字FOR XML和OPENXML ,這使得開發人員可以編寫Transact-SQL代碼來獲取XML流形式的查詢結果,並將一個XML 文檔分割成一個rowset。SQL Server 2005顯著的擴展了這些XML功能,推出了一個支持XSD schema驗證、 基於XQuery的操作和XML索引的本地的xml 數據類型。SQL Server 2008建立在之前版本的XML功能基礎之 上,做了改進來迎接客戶在存儲和操縱數據庫中的XML數據時所面臨的挑戰。

2 SQL Server XML 功能的發展歷程

SQL Server的XML功能隨著從SQL Server2000版本以來的每一個版本而不斷發展。在我們檢查SQL Server 2008中的改進之前,通過之前的版本來總結XML功能的發展歷程可能會比較有用。

2.1 SQL Server 2000中的XML功能

在SQL Server 2000中,Microsoft 推出了Transact-SQL 關鍵字FOR XML和OPENXML。FOR XML 是對 SELECT語句的擴展,它返回如下面的示例所示的XML流式的查詢結果。

SELECT ProductID, ProductName
   FROM Products Product
   FOR XML AUTO

這個查詢返回一個如下面示例所示的XML片斷:

<Product ProductID="1" ProductName="Widget"/>
<Product ProductID="2" ProductName="Sprocket"/>

OPENXML 功能執行與FOR XML 條件子句相反的功能,它創建一個XML文檔的rowset ,如下面的示例所 示:

DECLARE @doc nvarchar(1000)
SET @doc = '<Order OrderID = "1011">
 <Item ProductID="1" Quantity="2"/>
 <Item ProductID="2" Quantity="1"/>
 </Order>'
DECLARE @xmlDoc integer
EXEC sp_xml_preparedocument @xmlDoc OUTPUT, @doc
SELECT * FROM
OPENXML (@xmlDoc, 'Order/Item', 1)
WITH
(OrderID integer '../@OrderID',
ProductID integer,
Quantity integer)
EXEC sp_xml_removedocument @xmlDoc

注意用sp_xml_preparedocument和sp_xml_removedocument 存儲過程來創建XML文檔的節點樹的一個內 存展示的用法。這個Transact-SQL 代碼返回下面的rowset。

OrderID ProductID Quantity 1011 1 2 1011 2 1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved