我想为所有节点添加两个新属性。所有元素的属性名称和值都相同。
我有以下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.
有谁知道我做错了什么?
答案 0 :(得分:1)
不幸的是,
xml数据类型的modify()方法只能在SET中使用 UPDATE语句的子句。
所以,我需要创建一个表变量,在那里插入记录然后修改xmls。
要在一个修改插入语句中添加多个属性,您可以使用以下语法:
UPDATE @TempTable
SET XMLColumn.modify('insert (attribute test1 {"1" },attribute test2 {"2"}) into (/question)[1]')