plsql updatexml-无法根据属性更新值
Posted
技术标签:
【中文标题】plsql updatexml-无法根据属性更新值【英文标题】:plsql updatexml- can't update value based on attribute 【发布时间】: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>
我认为设置包含标签的值不是一个很好的解决方案,所以谁能帮我找出问题所在?
谢谢
【问题讨论】:
【参考方案1】:我错过了最后一个节点之后的 text() 函数:我正在更新节点本身而不是其内容。见:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions205.htm
【讨论】:
以上是关于plsql updatexml-无法根据属性更新值的主要内容,如果未能解决你的问题,请参考以下文章