程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 詳解SQL Server 2005 FOR XML 嵌套查詢的使用

詳解SQL Server 2005 FOR XML 嵌套查詢的使用

編輯:關於SqlServer


    提示:相比SQL Server 2000提供的FOR XML查詢,SQL Server 2005版本對現有功能增強的基礎上增加了不少新功能,最為吸引人的功能包括對Xml數據類型支持、使用 PATH 模式以及嵌套FOR XML查詢支持等,這意味著通過新的FOR XML查詢功能可以構造出結構更加靈活的XML數據。 在SQL S


 相比SQL Server 2000提供的FOR XML查詢,SQL Server 2005版本對現有功能增強的基礎上增加了不少新功能,最為吸引人的功能包括對Xml數據類型支持、使用PATH模式以及嵌套FOR XML查詢支持等,這意味著通過新的FOR XML查詢功能可以構造出結構更加靈活的XML數據。
  在SQL Server 2000中FOR XML查詢的結果是直接以文本方式返回到客戶端,為支持SQL Server 2005中的Xml數據類型,FOR XML 查詢提供了TYPE指令,通過TYPE支持返回結果將會變為XML數據類型。接下來以SQL Server2005中的AdventureWorks示例數據庫為例演練其功能。

  先來看第一個SQL查詢:


  DECLARE @TestStringValue nvarchar(1024);
  SET @TestStringValue = (SELECT ProductID,[Name] FROM Production.Product
  WHERE ProductSubcategoryID = 9
  FOR XML AUTO);
  SELECT @TestStringValue;


  輸出結果:

  結果為字符串,只是內容格式符合Xml片段要求,不過無法在SQL Server Management Studio中點擊以XML方式顯示。

  下面對SQL進行修改,增加TYPE指令:


  DECLARE @TestStringValue nvarchar(1024);
  SET @TestStringValue = (SELECT ProductID,[Name] FROM Production.Product
  WHERE ProductSubcategoryID = 9
  FOR XML AUTO,TYPE);


  不出意外,查詢結果收到如下錯誤提示:

  不允許從數據類型XML 到nvarchar 的隱式轉換。請使用CONVERT 函數來運行此查詢。

  可見通過TYPE指令返回的數據已經轉變成XML類型,改進後的查詢語句如下:


  DECLARE @XmlTestValue XML;
  SET @XMLTestValue = (SELECT ProductID,[Name] FROM Production.Product
  WHERE ProductSubcategoryID = 9
  FOR XML AUTO,TYPE);
  SELECT @XMLTestValue;


  通過SELECT 返回的結果支持XML方式顯示。

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