Oracle:如何使用updateXML更新文档中的多个节点?

时间:2009-01-01 23:29:30

标签: xml oracle updatexml

我可以写:

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 个答案:

答案 0 :(得分:5)

文档指出可以重复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 :(得分:1)

更新my_table         设置
           xml = updateXML(xml,'/ a / b / text()','1','/ a / c / text()','2')         其中document_id = 123