在DB2中替换xml列中xml属性的内容

在DB2中替换xml列中xml属性的内容,db2,xquery,xquery-update,Db2,Xquery,Xquery Update,我有一个保存在DB2表中的xml文档,它的数据类型为xml,我想更新一个节点的值。我试过这个: XQUERY replace value of node db2-fn:sqlquery('select my_xml_column from myTable where someId = someValue)/some/xpath/with/@attribute with "foobar" (我尝试了几种变体,谷歌暗示它可以做到的一切)。 但不幸的是,我只是收到了错误信息。在这里: SQL1600

我有一个保存在DB2表中的xml文档,它的数据类型为xml,我想更新一个节点的值。我试过这个:

XQUERY replace value of node db2-fn:sqlquery('select my_xml_column from myTable where someId = someValue)/some/xpath/with/@attribute with "foobar"
(我尝试了几种变体,谷歌暗示它可以做到的一切)。 但不幸的是,我只是收到了错误信息。在这里:

SQL16002N  An XQuery expression has an unexpected token "value" following "replace ". Expected tokens may include: "

我做错了什么?

updatemytable SET myXmlColumn=XMLQUERY('
转换副本$copy:=$original
modify do将$copy/some/xpath/with/@属性的值替换为“FOOBAR”
返回$copy
'
将myXmlColumn作为“原始”传递
)其中someId=someValue


这是有效的,并且达到了预期的效果。它希望有人能提出一个纯XQuery解决方案,但问题已经解决了…

updatemytable SET myXmlColumn=XMLQUERY('
转换副本$copy:=$original
modify do将$copy/some/xpath/with/@属性的值替换为“FOOBAR”
返回$copy
'
将myXmlColumn作为“原始”传递
)其中someId=someValue


这是有效的,并且达到了预期的效果。它希望有人能提出一个纯XQuery解决方案,但问题已经解决了……

@yankee:您使用的是正确的DB2服务器版本吗?(看起来9.5版本中有XQuery更新支持)您是否像本文中的示例那样使用了正确的SQL主机表达式?@Alejandro:是的,我使用的是DB2V9.7,它确实支持XQuery。运行简单的XQUERY,如“XQUERY db2 fn:sqlquery(…)/some/xpath”可以工作。“主持人表情”是什么意思?不幸的是,在您提到的文章中,xquery并非如此used@yankee:您正在使用并且从我链接的文章中,您必须将此XQuery更新表达式嵌入到一个非标准的DB2特定SQL表达式中。@Alejandro:我似乎没有正确地做到这一点…@yankee:您编写了“这很有效,并且做了我希望它做的事情”。然后你应该把它作为一个答案而不是一个问题更新。回答自己的问题也不错。@yankee:您使用的是正确的DB2服务器版本吗?(看起来9.5版本中有XQuery更新支持)您是否像本文中的示例那样使用了正确的SQL主机表达式?@Alejandro:是的,我使用的是DB2V9.7,它确实支持XQuery。运行简单的XQUERY,如“XQUERY db2 fn:sqlquery(…)/some/xpath”可以工作。“主持人表情”是什么意思?不幸的是,在您提到的文章中,xquery并非如此used@yankee:您正在使用并且从我链接的文章中,您必须将此XQuery更新表达式嵌入到一个非标准的DB2特定SQL表达式中。@Alejandro:我似乎没有正确地做到这一点…@yankee:您编写了“这很有效,并且做了我希望它做的事情”。然后你应该把它作为一个答案而不是一个问题更新。回答自己的问题也不错。