plsql updatexml-无法根据属性更新值

时间:2014-06-27 15:07:03

标签: xml plsql oracle11g

我正在使用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>

我认为设置包含标签的值不是一个很好的解决方案,所以有人可以帮我弄清楚出了什么问题吗?

由于

1 个答案:

答案 0 :(得分:0)

我错过了最后一个节点之后的text()函数:我正在更新节点本身而不是其内容。参见:

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions205.htm