Oracle: как использовать updateXML для обновления нескольких узлов в документе? - PullRequest
2 голосов
/ 02 января 2009

Я могу написать:

update my_table
set xml = updateXML(xml, '/a/b', '1')
where document_id = 123

Теперь, что если в том же запросе на обновление я также хочу установить / a / c равным 2 (в дополнение / a / b равным 1)? Я испытываю желание написать:

update my_table
set 
    xml = updateXML(xml, '/a/b', '1'),
    xml = updateXML(xml, '/a/c', '2')
where document_id = 123

Но это дает мне "ORA-00957: повторяющееся имя столбца". Любое предложение о том, как это сделать?

Ответы [ 2 ]

5 голосов
/ 02 января 2009

В документации указано, что строка XPath и выражение могут повторяться http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions205.htm#i1134878

так что попробуйте

обновить my_table задавать xml = updateXML (xml, '/ a / b', '1', '/ a / c', '2') где document_id = 123

1 голос
/ 26 апреля 2010

обновить my_table набор
xml = updateXML (xml, '/ a / b / text ()', '1', '/ a / c / text ()', '2') где document_id = 123

...