如何查看SQL查询返回的列的数据类型?

时间:2014-10-14 23:27:05

标签: sql oracle types

我查询了表单

select id, extract(xml, 'Foo/Bar/text()') value 
from mytable;

此查询在SQL Developer中运行正常,并返回看似char列的查询。

然而,调用此查询的软件不能很好地使用它,并且正在抛出错误:

java.lang.NoClassDefFoundError - oracle/xdb/XMLType

因此,为了调试它,我想知道extract语句返回的确切数据类型。

这可能吗?

1 个答案:

答案 0 :(得分:0)

如评论中所述,extractValue()已被弃用。如果您在.GetStringVal() - extract上使用xmltype方法,那么您最终会获得quot;而不是",{{1而不是&等等。因此,现在,救援......

...... &函数!


示例1 - 不是我们想要的

xmlcast()

...产生select xmltype('<xx><value>&amp;&quot;</value></xx>').extract('/xx/value') from dual; 类型的结果。

示例2 - 仍然不是我们想要的

xmltype

...产生的字符串结果为......

select xmltype('<xx><value>&amp;&quot;</value></xx>').extract('/xx/value').getStringVal()
from dual;

示例3 - 关闭,但仍然不是我们想要的

<value>&amp;&quot;</value>

...产生的字符串结果为......

select xmltype('<xx><value>&amp;&quot;</value></xx>').extract('/xx/value/text()').getStringVal()
from dual;

......而......

示例4 - 最终方式

&amp;&quot;

...产生正确的字符串结果......

select xmlcast(xmltype('<xx><value>&amp;&quot;</value></xx>').extract('/xx/value') as varchar2(4000))
from dual;