我查询了表单
select id, extract(xml, 'Foo/Bar/text()') value
from mytable;
此查询在SQL Developer中运行正常,并返回看似char列的查询。
然而,调用此查询的软件不能很好地使用它,并且正在抛出错误:
java.lang.NoClassDefFoundError - oracle/xdb/XMLType
因此,为了调试它,我想知道extract语句返回的确切数据类型。
这可能吗?
答案 0 :(得分:0)
如评论中所述,extractValue()
已被弃用。如果您在.GetStringVal()
- extract
上使用xmltype
方法,那么您最终会获得quot;
而不是"
,{{1而不是&
等等。因此,现在,救援......
...... &
函数!
示例1 - 不是我们想要的
xmlcast()
...产生select xmltype('<xx><value>&"</value></xx>').extract('/xx/value')
from dual;
类型的结果。
示例2 - 仍然不是我们想要的
xmltype
...产生的字符串结果为......
select xmltype('<xx><value>&"</value></xx>').extract('/xx/value').getStringVal()
from dual;
示例3 - 关闭,但仍然不是我们想要的
<value>&"</value>
...产生的字符串结果为......
select xmltype('<xx><value>&"</value></xx>').extract('/xx/value/text()').getStringVal()
from dual;
......而......
示例4 - 最终方式
&"
...产生正确的字符串结果......
select xmlcast(xmltype('<xx><value>&"</value></xx>').extract('/xx/value') as varchar2(4000))
from dual;