2

私は書くことができます:

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:重複した列名」が表示されます。これを行う方法について何か提案はありますか?

4

2 に答える 2

5

ドキュメントには、XPath文字列と式を繰り返すことができることが示されています http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions205.htm#i1134878

だから試してみてください

update my_table set xml = updateXML(xml、'/ a / b'、 '1'、'/ a / c'、 '2')ここで、document_id = 123

于 2009-01-02T00:36:23.343 に答える
1

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

于 2010-04-26T13:06:26.530 に答える