本文介绍了Oracle updateXml“小于符号"作为文字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有xml文档
<d>
<r>a<b</r>
</d>
,我想将其更新为
<d>
<r>a<b or c>d</r>
</d>
使用 updateXML 语句.
执行
select updateXML(xmltype('<d><r>a<b</r></d>'),
'/d/r[1]/text()',
'a<b or c>d')
from dual;
返回
<d>
<r>a&lt;b or c&gt;d</r>
</d>
因为&"而不好.
It is not good because of "&".
执行
select updateXML(xmltype('<d><r>a<b</r></d>'),
'/d/r[1]/text()',
'a<b or c>d')
from dual;
抛出
我如何达到预期的结果?
How can I reach expected result?
编辑:仅在10g数据库中引发ORA-31067.在11g中是正确的查询.
EDIT: ORA-31067 is raised only in 10g database. It is correct query in 11g.
EDIT2 :在10.2.0.3版本上引发了错误,在10.2.0.5版本上未引发.可能是个错误吗?
EDIT2: Error raised on 10.2.0.3 version and does not raised on 10.2.0.5. May by it was a bug?
推荐答案
您可以使用以下丑陋的解决方法:
You can use this ugly workaround:
select dbms_xmlgen.convert(updateXML(xmltype('<d><r>a<b</r></d>'),
'/d/r[1]/text()',
'a<b or c>d').getStringVal(), 1)
from dual;
这篇关于Oracle updateXml“小于符号"作为文字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!