我正在使用Oracle 11g数据库,它有一些xml字段,如:
<bookstore id="other">
<fractionOfbooks>1.0</fractionOfbooks>
</bookstore>
<bookstore id="main">
<fractionOfbooks>0.0</fractionOfbooks>
</bookstore>
<bookstore id="small">
<fractionOfbooks>0.0</fractionOfbooks>
</bookstore>
所以我需要将分数从id =“other”更改为0.0,并将id =“main”更改为1.0。
我正在做两个查询,所以我先做:
update
db.mytable
set
xml = updatexml(
xml,
'/*:bookstore/[@name="other"]/*:fractionOfbooks',
0.0
)
奇怪的是,如果我选择记录,结果xml缺少最后一个标记,所以它变为:
<bookstore id="other">0</bookstore>
<bookstore id="main">
<fractionOfbooks>0.0</fractionOfbooks>
</bookstore>
<bookstore id="small">
<fractionOfbooks>0.0</fractionOfbooks>
</bookstore>
我认为设置包含标签的值不是一个很好的解决方案,所以有人可以帮我弄清楚出了什么问题吗?
由于
答案 0 :(得分:0)
我错过了最后一个节点之后的text()函数:我正在更新节点本身而不是其内容。参见:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions205.htm