我是SQL DML的新手,我可以使用任何帮助辨别是否可行。
declare @xml XML, @id int, @new XML
SET @id = 2
SET @xml = '<root><node ids=1><child /></node><node ids=2><child /></node></root>'
SET @new = '<node ids=2,3><child /></node>'
我想将根节点上的整个节点元素设置为与@new相同,但我无法通过SQL DML找出语法。我知道以下几个原因并不起作用,但考虑到我试图执行的功能几乎是伪代码。
SET @xml.modify('replace value of (/root/node[@id=sql:variable("@id")]) with sql:variable(@new)')
我可能有比我意识到的更多语法错误,因为我还不熟悉这些东西。我知道它希望我为无类型值指定/ text(),但是我想要替换包装节点&#34;标签以及之后应该使用[1]的第一个。处理这种调用的正确语法是什么?
答案 0 :(得分:4)
您可以delete
node
子元素,然后插入新的node
元素
SET @xml.modify(' delete (/root/node)');
SET @xml.modify('insert sql:variable("@new") into (/root)[1] ')