|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因此我们看到,这些信息足够让我们对单个操作实现“逆操作”。<p> 本文会商SQLServer2005的新功效,它同意你将XML数据分化到干系格局中,而不用耗用太多内存。我们起首懂得一下XQuery和它在SQLServer2005中为开辟者供应的功效。 XQuery先容
XQuery,也称作XMLQuery,是一种查询XML数据的言语,同意你提取所需的节点和元素。它由W3C界说,可用于明天的年夜多半支流数据库引擎中,如Oracle、DB2和SQLServer。
SQLServer2005XQuery函数
上面的四个函数是SQLServer2005中的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文件:<personname="betty"gift="camera"/>
<personname="zach"gift="elmodoll"/>
<personname="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文件更是云云。
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。 |
|