0

我想为所有节点添加两个新属性。所有元素的属性名称和值都相同。

我有以下 XML 结构:

<question id="1001"></question>
<question id="1002"></question>
<question id="1003"></question>
<question id="1004"></question>

并希望将其转换如下:

<question id="1001" test1="1" test2="2"></question>
<question id="1002" test1="1" test2="2"></question>
<question id="1003" test1="1" test2="2"></question>
<question id="1004" test1="1" test2="2"></question>

我无法在文档中找到如何添加多个属性的示例,所以我开始只添加第一个:

SELECT T.c.modify('insert attribute test1 {"1"} into (/question)[1]')
FROM @SetQuestionsAndAnswersDetailsXML.nodes('/question') T(c)

但我收到以下错误:

Msg 8137, Level 16, State 1, Line 89
Incorrect use of the XML data type method 'modify'. A non-mutator method is expected in this context.

有谁知道我做错了什么?

4

1 回答 1

1

很遗憾,

xml 数据类型的 modify() 方法只能在 UPDATE 语句的 SET 子句中使用。

所以,我需要创建一个表变量,在那里插入记录,然后修改 xmls。

为了在一个修改插入语句中添加多个属性,您可以使用以下语法:

UPDATE @TempTable
SET XMLColumn.modify('insert (attribute test1 {"1" },attribute test2 {"2"}) into (/question)[1]')
于 2013-05-02T10:06:51.030 回答