Heim > Datenbank > MySQL-Tutorial > inconsistent datatypes: expected

inconsistent datatypes: expected

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 16:00:32
Original
1495 Leute haben es durchsucht

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

测试人员反映说有个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找找答案看。

用WM_CONCAT作为关键字搜索,真搜到了这么一篇文章[ID 1300595.1],对此问题作出了详细说明。Oracle的解释是WM_CONCAT是Workspace Manager中的一个内部函数,可能会随着数据库版本的不同函数也会不同。在10.2.0.4/11.1.0.7/11.2.0.1中WM_CONCAT返回的是VARCHAR2,而在10.2.0.5/11.2.0.2中返回值为CLOB。所以两个库的函数定义不同也就可以理解了。所以Oracle是不建议使用WM_CONCAT这类内部函数(internal undocumentd function)的,而且对由于使用这类函数所导致的损失,,Oracle也是不负责的,而且这类函数的更改也不会通知用户。所以要使用这类函数,一定要三思而后行!

本文永久更新链接地址

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage