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

SQL Server 2008 中有關XML的新功能(1)

編輯:關於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