inconsistent datatypes: expected - got CLOB错误一例

2015-07-16 12:08:44 · 作者: · 浏览: 0

测试人员反映说有个SQL在其中一个测试环境能正常执行,但在另一个测试环境却无法执行,错误为:


ORA-00932: inconsistent datatypes: expected - got CLOB


开始怀疑是不是表中有CLOB字段导致,但是查看了一下相关的表结构,没有CLOB、BLOB等类型的字段。接着分析SQL,有个地方引起了我的注意,在这个SQL中,使用的WMSYS.WM_CONCAT这个函数。分别在两个测试环境查看这个函数的定义,发现了区别:


执行正确的库的WM_CONCAT定义:


SQL> desc wmsys.wm_concat FUNCTION wmsys.wm_concat RETURNS VARCHAR2? Argument Name? ? ? ? ? ? ? ? ? Type? ? ? ? ? ? ? ? ? ? In/Out Default?? ------------------------------ ----------------------- ------ --------? P1? ? ? ? ? ? ? ? ? ? ? ? ? ? VARCHAR2? ? ? ? ? ? ? ? IN


执行异常的库的WM_CONCAT定义:


SQL> desc wmsys.wm_concat FUNCTION wmsys.wm_concat RETURNS CLOB? Argument Name? ? ? ? ? ? ? ? ? Type? ? ? ? ? ? ? ? ? ? In/Out Default?? ------------------------------ ----------------------- ------ --------? P1? ? ? ? ? ? ? ? ? ? ? ? ? ? VARCHAR2? ? ? ? ? ? ? ? IN


这两个函数的返回值是不一样的!执行错误的库返回CLOB,难怪会报inconsistent datatypes: expected - got CLOB的错误。但是为什么会这样呢?上metalink找找答案看。