当前位置: 首页 > 面试题库 >

错误使用XML数据类型方法“修改”。在这种情况下,期望使用非突变方法

吕宸
2023-03-14
问题内容

我试图根据大小写更新表中的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

我收到一个错误:

错误使用XML数据类型方法“修改”。在这种情况下,期望使用非突变方法。

所需的输出:

  • 当时@type = 'Q',将type节点插入为Q
  • 当时 @type = 'G',将type节点插入为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]');


 类似资料:
  • 这是一个使用合并排序的程序,从1到1000对1000个数字的列表进行排序。它显示原始列表,然后调用递归方法对其进行排序,然后显示。 代码中我不明白的是这两行: 合并排序(数字,低,中);//在方法中,它会说“这里” 合并排序(数字,中间1,高); 我是java的初学者,这与我所学的一切背道而驰,因为我无法理解如何在方法中调用方法。除非它是一个我怀疑的对象。有人能解释一下这两行代码的作用吗?

  • 我正在创建一个非常简单的ByteBuddy委托/代理类。 其意图(同样非常简单)是代理一个类,这样它的任何非、非、非方法等都会被路由到它的字段上的等效方法,正如它的方法返回的那样。(通常的嫌疑犯应该有例外:,,和等等。) 我使用子类策略设置了我的代理类。我还定义了两个方法,和,以及一个名为的适当类型的字段。我使用策略完成了这一点。为了简洁明了,我在这里省略了它。该类实际上包含这个字段和这两个方法。

  • 问题内容: 我有一个父类A,及其子B。两者都具有带有diff类型参数的方法。 A级 B级 运行此命令时,将获得“ Base impl:override”作为输出! 指向的对象,而他经过的说法是,所以不应该调用它的方法是什么? 问题答案: 当您使用类型A的引用时,您只会看到为类A定义的方法。由于B中不会覆盖B(因为它具有不同的签名),因此不会调用它。 如果要使用类型B的引用,则两种方法都将可用,并且

  • 问题内容: 这可能是一个琐碎的问题,但阅读ARG和ENV的文档对我而言并不清楚。 我正在构建一个PHP-FPM容器,我想提供启用/禁用某些用户需求扩展的功能。 如果可以在Dockerfile中通过添加条件并在build命令上传递标志来做到这一点,那就太好了,但不支持AFAIK。 就我而言,我的个人方法是在容器启动时运行一个小的脚本,如下所示: 这是我的样子: 如果您需要深入了解我的工作方式,那么这

  • 问题内容: 我是T-SQL命令的新手,所以我在SQL逻辑中找到了一个可以使用它并想要对其进行测试的地方,但无法弄清楚我应该如何使用它: 请提出正确的用法。谢谢! 问题答案: 您在帮助中了吗?这是一个简单的例子:

  • 我最近在浏览SurfaceView的android文档,我发现要获得实际的surface,你必须做以下事情: surface holder的文档在这里:https://developer . Android . com/reference/Android/view/surface holder . html 现在一个SurfaceHolder从getHolder()返回,然后你可以在那个支架上调用