我有一个从单个select语句创建的@XML文档。
......
我想将xsi:nil插入此文档的'targetNode'属性。
@XML.modify( 'insert attribute xsi:nil {"true"} into (root/node/node1/targetNode) [1]')
上面的代码会将属性插入@XML文档中targetNode的第一次出现。但是,insert语句仅在单个节点上起作用。有什么方法可以将此属性插入@XML文档中的targetNode的所有实例中。
我在多个节点上的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