【发布时间】:2015-06-12 11:06:47
【问题描述】:
我对 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(),但我也想替换包装的“节点”标签,并且它应该在第一个带有 [1] 之后。处理这种调用的正确语法是什么?
【问题讨论】:
标签: sql sql-server sql-server-2008 dml