我正在尝试基于同级节点更新XML标签的值。
我的XML如下:
<root>
<mydata>
<submission>
<uname>rosy</uname>
<idlist>22,23,89</idlist>
<status>unavailable</status>
<oldstatus>unavailable</oldstatus>
</submission>
<submission>
<uname>amy</uname>
<idlist>22,23,89</idlist>
<status>unavailable</status>
<oldstatus>unavailable</oldstatus>
</submission>
<submission>
<uname>rosy</uname>
<idlist>66</idlist>
<status>unavailable</status>
<oldstatus>unavailable</oldstatus>
</submission>
</mydata>
</root>
我有一个查询,可用于基于一个参数更新节点。
UPDATE MYTABLE
SET MY_DATA =
UPDATEXML (
MY_DATA ,
'/root/mydata/submission[idlist=''22,23,89'']/status/text()',
'paid',
'/root/mydata/submission[idlist=''22,23,89'']/oldstatus/text()',
SYSDATE
)
WHERE ROW_ID = 1234;
也就是说,当前我可以基于“ uname”或“ idlist”查找节点。但是我看不到如何一起基于两个参数进行更新。
这是“将状态更新为已批准的状态,其中uname玫瑰色,idlist为22、23、89”。
任何指针吗?
答案 0 :(得分:0)
对我有用的解决方案是:
SET MY_DATA = UPDATEXML(MY_DATA, '/ root / mydata / submission [idlist =''22,23,89''and uname =“''rosy''] / status / text()', “付费”)
由于某些原因,当uname中包含特殊字符时,该查询将不起作用,但是如果该字段仅包含字母或数字,则可以正常工作。