2011-02-03 91 views
0

我有一个xml文档保存在一个DB2数据类型的DB2表中,我想更新一个节点的值。我试过这个:替换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: " 

我在做什么错了?

+0

@yankee:你使用正确的DB2服务器版本吗? (看起来像从9.5开始支持XQuery Update)您是否使用了正确的SQL主机表达式,如本文中的示例http://www.ibm.com/developerworks/data/library/techarticle/dm-0710nicola/? – 2011-02-03 22:58:31

回答

0

update myTable SET myXmlColumn = XMLQUERY(' transform copy $copy := $original modify do replace value of $copy/some/xpath/with/@attribute with "FOOBAR" return $copy ' PASSING myXmlColumn AS "original" ) WHERE someId = someValue

这样起作用并且具有期望的效果。它希望有人提出一个纯粹的XQuery解决方案,但问题解决了......