提示:相比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方式顯示。