电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:9日期:2023-11-05 19:59:36

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

了解了TYPE指令的功能后,就可以來看FOR XML查詢帶給開發者的更多驚喜。以示例數據庫的產品表(Production.Product)和產品分類子類表(Production.ProductSubcategory)為例進行演示。

編寫產品子類別為“9”的產品數據查詢:

SELECT ProductSubcategoryID,[Name] ,

(SELECT ProductID,[Name] FROM Production.Product Product

WHERE ProductSubcategoryID = 9

FOR XML AUTO,TYPE) AS Products

FROM Production.ProductSubcategory AS Category

WHERE ProductSubcategoryID = 9

FOR XML AUTO;

輸出結果如下:

如果在產品查詢子句中不提供TYPE指令,那么輸出就會變成下面結果:

' />

以上幾個查詢結果都沒有帶命名空間,不過SQL Server 2005 通過WITH XMLNAMESPACES子句提供了對命名空間的支持,下面的查詢將顯示一個完整的帶默認命名空間的Xml文檔。

WITH XMLNAMESPACES ('uri0' as ns0)

SELECT ProductSubcategoryID,[Name] ,

(SELECT ProductID,[Name] FROM Production.Product Product

WHERE ProductSubcategoryID = 9

FOR XML RAW('ns0:Product'),TYPE) AS 'ns0:Products'

FROM Production.ProductSubcategory AS Category

WHERE ProductSubcategoryID = 9

FOR XML RAW('ns0:Category'),ROOT('ns0:Message');

輸出結果:

如果采用默認命名空間,編寫SQL如下:

WITH XMLNAMESPACES (DEFAULT 'http://blog.csdn.net/zhzuo')

SELECT ProductSubcategoryID,[Name] ,

(SELECT ProductID,[Name] FROM Production.Product Product

WHERE ProductSubcategoryID = 9

FOR XML AUTO,TYPE) AS Products

FROM Production.ProductSubcategory AS Category

WHERE ProductSubcategoryID = 9

FOR XML AUTO,ROOT('Message');

輸出結果:

另外,在SQL Server 2005中增加了FOR XML PATH 模式,通過使用FOR XML PATH 模式可以建立清晰靈活的Xml格式,相比使用FOR XML EXPLICIT更為簡單:

WITH XMLNAMESPACES (DEFAULT 'http://blog.csdn.net/zhzuo')

SELECT ProductID AS 'Product/@ProductID',

Name AS 'Product/Name'

FROM Production.Product

WHERE ProductSubcategoryID = 9

FOR XML PATH(''),ROOT('Products');

輸出結果:

Rear Derailleur

Front Derailleur

在實際應用過程中,以.NET平臺應用開發為例,通過ADO.NET訪問SQL Server 2005返回的Xml數據結構可以更加豐富,甚至可以做到不做Xml樣式轉換直接服務于上一層模塊。在企業應用集成方面,以BizTalk平臺為例,在調用SQL Adapter的時候可以更加靈活,降低為了制定合理Xml Schema帶來的復雜性。目前,最新版本的BizTalk(2006 R2)對使用了SQL Server 2005加強FOR XML功能的存儲過程或SQL語句不支持通過SQL適配器向導生成XML Schema,不過這個問題可以直接通過Visual Studio IDE編寫符合實際格式的XML Schema來解決。

標簽: Sql Server 數據庫
主站蜘蛛池模板: 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 断桥铝破碎机_铝合金破碎机_废铁金属破碎机-河南鑫世昌机械制造有限公司 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 吹塑加工_大型吹塑加工_滚塑代加工-莱力奇吹塑加工有限公司 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 河南道路标志牌_交通路标牌_交通标志牌厂家-郑州路畅交通 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 电液推杆生产厂家|电动推杆|液压推杆-扬州唯升机械有限公司 | IP检测-检测您的IP质量 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 动物解剖台-成蚊接触筒-标本工具箱-负压实验台-北京哲成科技有限公司 | 光栅尺_Magnescale探规_磁栅尺_笔式位移传感器_苏州德美达 | HDPE储罐_厂家-山东九州阿丽贝防腐设备 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 楼承板-开口楼承板-闭口楼承板-无锡海逵 | 太阳能发电系统-太阳能逆变器,控制器-河北沐天太阳能科技首页 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 球盟会·(中国)官方网站 | 警方提醒:赣州约炮论坛真的安全吗?2025年新手必看的网络交友防坑指南 | 安徽合肥项目申报咨询公司_安徽合肥高新企业项目申报_安徽省科技项目申报代理 | 模具钢_高速钢_不锈钢-万利钢金属材料 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 高压微雾加湿器_工业加湿器_温室喷雾-昌润空气净化设备 | 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 商秀—企业短视频代运营_抖音企业号托管 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 |