使用TRANSACT-SQL向XML添加节点

8

我一直在尝试这个简单的代码,但是没有结果。我只是想向XML变量添加一个新节点。

DECLARE @XML XML;
SET @XML = '<root>
<policyData>
    <txtComentario />
    <idRegProducto>76</idRegProducto>
    <txtDuracion>24</txtDuracion>
</policyData>
</root>';
DECLARE @NODE XML;
SET @NODE = '<newNode>10</newNode>';
SET @XML.modify
('insert sql:variable("@NODE") as first
into (/root/policyData)[0]')
SELECT @XML;

没有错误,但新节点未显示在输出中。在使用SQL Server中的XML之前,是否有必须先设置的内容?为什么不起作用?谢谢!

3
请将[0]更改为[1] - Mikael Eriksson
1个回答

9

当你使用[0]时,实际上是在使用[position()=0]。第一个节点的位置是1,因此如果想要将新节点插入到policyData的第一个出现位置,应该将谓词改为[1]


非常感谢。我想知道为什么微软不会在这里抛出错误,让用户知道语法不正确。 - Oscar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接