当前位置:  开发笔记 > 数据库 > 正文

在SQL 2005中使用XML.modify()在多个XML节点中插入属性

如何解决《在SQL2005中使用XML.modify()在多个XML节点中插入属性》经验,为你挑选了1个好方法。

我有一个从单个select语句创建的@XML文档。


 
  
   
   
  
  
   
   
  
  
   
   
  
 
 
  ......
 

我想将xsi:nil插入此文档的'targetNode'属性。

@XML.modify( 'insert attribute xsi:nil {"true"} into (root/node/node1/targetNode) [1]') 

上面的代码会将属性插入@XML文档中targetNode的第一次出现。但是,insert语句仅在单个节点上起作用。有什么方法可以将此属性插入@XML文档中的targetNode的所有实例中。



1> Jean-Françoi..:

在多个节点上的DML操作中 找到了一个简单而优雅的解决方案http://blogs.msdn.com/b/denisruc/archive/2005/09/19/471562.aspx

这个想法是计算有多少个节点,并一一修改它们:

DECLARE @iCount int
SET @iCount = @var.value('count(root/node/node1/targetNode)','int')

DECLARE @i int
SET @i = 1

WHILE (@i <= @iCount)
BEGIN
   @xml.modify('insert attribute xsi:nil {"true"} into (root/node/node1/targetNode)[sql:variable("@i")][1]')
   SET @i = @i + 1
END

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有