Замена содержимого атрибута xml в столбце xml в DB2
У меня есть XML-документ, сохраненный в таблице DB2 с типом данных XML, и я хочу обновить значение узла. Я попробовал это:
XQUERY replace value of node db2-fn:sqlquery('select my_xml_column from myTable where someId = someValue)/some/xpath/with/@attribute with "foobar"
(и я попробовал несколько вариантов, все, что Google намекал, что он может сделать эту работу). Но, к сожалению, я просто получаю сообщения об ошибках. Вот:
SQL16002N An XQuery expression has an unexpected token "value" following "replace ". Expected tokens may include: "
Что я делаю неправильно?
1 ответ
Решение
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, но проблема решена...