SQL 2005的数据修改语言(XML DML)(一)

日期: 2008-09-09 作者:张洪举 来源:TechTarget中国 英文

  作为对XQuery语言的扩展,XML DML为XML数据操作提供了更大的灵活性,而不再仅仅是对XML数据进行一些查询操作。通过XML DML,用户可以像操作关系表一样对XML中的节点内容进行插入、更新和删除操作。XML DML需要通过xml数据类型的modify方法进行调用。


  1.insert


  insert用于将Expression1标识的一个或多个节点作为Expression2标识的节点的子节点或同级节点插入。语法格式如下:






  insert 
  Expression1 ( 
  {as first | as last} into | after | before 
  Expression2 
  ) 


  Expression1和Expression2


  标识要插入的一个或多个节点。它可以是常量XML实例,也可以是XQuery表达式。该表达式可以得出节点、文本节点或一组有序的节点,但它无法解得根节点。如果该表达式得出一个值或一组值,则这些值作为单个文本节点插入,各值之间以空格分隔开。如果将多个节点指定为常量,则这些节点用括号括住,并以逗号分隔开。但无法插入异构序列(如一组元素、属性或值)。如果Expression1解得一个空序列,则不会发生插入操作,并且不会返回任何错误。


  into


  Expression1标识的节点作为Expression2标识的节点的子节点插入。如果Expression2中的节点已有一个或多个子节点,则必须使用as first或as last来指定所需的新节点添加位置。


  after


  Expression1标识的节点作为Expression2标识的节点的同级节点直接插入在其后面,after关键字不能用于插入属性。


  before


  Expression1标识的节点作为Expression2标识的节点的同级节点直接插入在其前面,before关键字不能用于插入属性。


  (1)插入元素文档中


  在下面的示例中,首先将XML文档分配给xml类型的变量。然后使用几个insert XML DML语句说明如何将元素节点插入文档中。注意在示例中为各种路径表达式都指定了“[1]”,以要求每次只返回单个目标,这样就确保了只有单个目标节点。每次插入后,select语句都会显示结果。最终执行结果如图1所示。 


     





DECLARE @myDoc xml 
  SET @myDoc = ’ 
  ’ 
  select @myDoc 



  – 插入item的第1个子节点,此时不需要指定as first或as last







 SET @myDoc.modify(’ 
  insert 张洪举 
  into (/root/item)[1]’) 
  select @myDoc 


  – 插入item的第2个子节点,as first指定插入到同级子节点的前面 







SET @myDoc.modify(’ 
  insert 
  as first into (/root/item)[1]’) 
  select @myDoc 


  – 插入第2个item节点   







 SET @myDoc.modify(’ 
  insert 
  into (/root)[1]’) 
  select @myDoc 


  – 向第2个item中插入第1个子节点  







  SET @myDoc.modify(’ 
  insert 
  as first into (/root/item)[2]’) 
  select @myDoc 
  GO 


  
  图1 向XML中插入节点


  (2)插入多个元素到文档中


  在下面的示例中,将在下面的示例中,将







  DECLARE @myDoc xml  
  SET @myDoc = ’ 
   
   
  ’ 
  select @myDoc 
  SET @myDoc.modify(’ 
  insert ( 
  , 
  张洪举 
  ) 
  into (/root/item)[1]’); 
  select @myDoc 
  GO      

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐