我正在做一个项目,我正在使用一个表,其中一个列中存储了 xml 数据。我正在尝试根据 xml_id 和 xml 节点的位置更新我的整个 xml 节点,但我无法做到这一点。我试过了以下查询,但它只更新 xml 节点的值,而不是节点的整个键/值。
表结构
查询更新xml节点的值
update tblCCBT_Step_Page_Text_Xml
set Xml_XmlData.modify('replace value of (/page/*[position()=1]/text())[1]
with "test value"')where xml_id = 101
所以现在我尝试了以下查询来更新整个内部节点
update tblCCBT_Step_Page_Text_Xml
set Xml_XmlData.modify('replace value of (/page/*[position()=1]/text())[1]
with "<testnode>test value</testnode>"') where xml_id = 101
但是我在尝试执行此操作时遇到错误
消息 9306,级别 16,状态 1,第 2 行
XQuery [tblCCBT_Step_Page_Text_Xml.Xml_XmlData.modify()]:'replace value of' 的目标不能是联合类型,找到 '(element(*,xdt:untyped) | 注释 |处理指令|文本)?'。
这是我存储在列中的 xml
<page name="page0" identifier="ff-102-101-101">
<backBut>test value</backBut>
<printBut>Print</printBut>
<quiz1>Click on the circle that best describes your</quiz1>
<quiz2>Continue</quiz2>
<quiz3>Finish</quiz3>
<quiz4>You are now on questions </quiz4>
<quiz5>out of</quiz5>
<quiz6>Please answer each question before continuing.</quiz6>
</page>
现在在上面的xml中我试图替换 -
<backBut>test value</backBut> with <testnode>test value</testnode>
请建议如何实现这一目标。谢谢