新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 关于 XML 的一般性技术讨论,提供 XML入门资料 和 XML教程
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML基础 』 → 在SQLServer中用XQuery分解XML数据 - Xml编程 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5060 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 在SQLServer中用XQuery分解XML数据 - Xml编程 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     long1123 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:12
      积分:74
      门派:XML.ORG.CN
      注册:2008/9/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给long1123发送一个短消息 把long1123加入好友 查看long1123的个人资料 搜索long1123在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看long1123的博客楼主
    发贴心情 在SQLServer中用XQuery分解XML数据 - Xml编程

    9)在SQLServer中用XQuery分解XML数据 - Xml编程

        在举例说明如何分解上一篇文章中的数据时,我们首先了解一下XQuery和它在SQL Server 2005中为开发者提供的功能。

      XQuery介绍

      XQuery,也称作XML Query,是一种查询XML数据的语言,允许你提取所需的节点和元素。它由W3C定义,可用于今天的大多数主流数据库引擎中,如Oracle、DB2和SQL Server。

      SQL Server 2005 XQuery函数

      下面的四个函数是SQL Server 2005中的XQuery函数。(注意,XML、XQuery语句和下面的函数都区分大小写。例如,SQL编译器接受XML数据中的.exist,但拒绝.EXIST或.Exist。)

      xml.exist

      这个方法根据一个XML节点上的搜索表达式返回一个布尔值。例如,列表A中XML代码片段中的语句将返回1(真):

      SELECT @x.exist('/christmaslist/person[@gift = "socks"]')

      这个语句返回0(假):

      SELECT @x. exist ('/christmaslist/zach')

      由于“Socks”一词被封套,这个语句将返回0(假)。

      SELECT @x.exist('/christmaslist/person[@gift = "socks"]')

      xml.value

      这个方法接受一个XQuery语句并返回一个单独值。使用列表A中同样的XML代码片段,不可以使用VALUE函数生成“betty”值,如下所示:

      SELECT @x.value('/christmaslist[1]/person[1]/@name', 'VARCHAR(20)')

      而XQuery生成“zach”值。

      SELECT @x.value('/christmaslist[1]/person[2]/@name', 'VARCHAR(20)')

      xml.query

      这个方法接受一个XQuery并返回一个XML数据类型的实例。可以按需要将这些查询简单或复杂化,下面是一个简单的例子:

      SELECT @x.query('/christmaslist/person')

      它返回XML文件:

      以下是引用片段:
    <person name="betty" gift="camera" />
    <person name="zach" gift="elmo doll" />
    <person name="brad" gift="socks" />

      xml.nodes

      在你需要将一个XML数据类型变量中的数据分解到关系数据中时,这个方法十分有用。这个方法接受一个XQuery语句作为参数,并返回一个包含XML变量逻辑标量数据的行集。列表B中的查询利用上面定义的XML变量,并将数据分解到一个结果集中,它显示在XML变量中定义的人物姓名。

      修改OPENXML存储过程

      现在我来说明如何修改上周的OPENXML存储过程,使其可以应用XQuery功能。首先,我往XML变量中加载一些数据。如列表C所示。我们可以建立一个接受XML参数的过程,再应用XQuery函数把XML文件中的数据插入一个表中,而不必应用OPENXML。如列表D所示。

      最初在数据库中应用XML似乎有些难于处理,还要花一些时间习惯使用XQuery和Xpath查询。但是,经过一段时间的学习以后,你就会发现在数据库中应用XML数据相当实用。

      例如,在上述存储过程中应用XML数据,你只需调用一次数据库,而不必像典型存储过程编程那样调用N次数据库。这二者似乎区别不大,但对一个繁忙的系统而言,应用XML数据会有很大益处。而且,应用XQuery而非OPENXML还会显著提高性能,对小型XML文件更是如此。

                            文章来源  东方标准 http://www.gowinedu.com/ls/Learning/7763.html


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/9/10 17:19:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML基础 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/2 20:20:06

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms