【问题标题】:plsql updatexml- can't update value based on attributeplsql updatexml-无法根据属性更新值
【发布时间】:2014-06-27 15:07:02
【问题描述】:

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

我认为设置包含标签的值不是一个很好的解决方案,所以谁能帮我找出问题所在?

谢谢

【问题讨论】:

    标签: xml plsql oracle11g


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多