gpt4 book ai didi

sql - 错误使用 XML 数据类型方法 'modify'。在此上下文中需要使用非增变器方法

转载 作者:行者123 更新时间:2023-12-02 14:59:26 26 4
gpt4 key购买 nike

我正在尝试根据大小写更新表中的 XML 数据列。下面是我的代码:

UPDATE #temp
SET xml_data = CASE
WHEN @type = 'G'
THEN xml_data.modify('insert <type>G</type> after (/Main/name)[1]');
WHEN @type = 'Q'
THEN xml_data.modify('insert <type>Q</type> after (/Main/name)[1]');
END

我收到一个错误:

Incorrect use of the XML data type method 'modify'. A non-mutator method is expected in this context.

期望的输出:

  • @type = 'Q'时,插入类型节点为Q
  • @type = 'G'时,插入类型节点为G

XML 结构:

<Main>
<name>John doe</name>
<type>Q</type>
<age>15</age>
</Main>

有什么帮助吗?!

更新:

我编辑的查询:

UPDATE #temp
SET xml_data.modify('insert <Type>{sql:variable("@var")}</Type> after (/Main/name)[1]')

此查询将类型添加到 XML 的末尾。输出:

<Main>
<name>John doe</name>
<age>15</age>
</Main>
<Type>Q</Type>

最佳答案

语法是SET [xml_column].modify,没有使用赋值。不使用 CASE,而是使用特殊的 sql:variable 函数将变量折叠到更新中:

UPDATE #temp 
SET xml_data.modify('insert <type>{sql:variable("@type")}</type> after (/Main/name)[1]');

关于sql - 错误使用 XML 数据类型方法 'modify'。在此上下文中需要使用非增变器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50950033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com