java.lang.ClassCastException: weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB cannot be cast to java.lang.String

最近开发中遇到个问题,在开发自身环境下是没问题的,但是在测试库中报错:java.lang.ClassCastException: weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB cannot be cast to java.lang.String,经过定位是由于某个字段的sql查询语句不对,但是在开发库中是没问题的,那么自然就会想到是数据库的差异了,利用SELECT * FROM v$version;在开发和测试库分别查询后发现,开发库是10g而测试库是11g,经查得知,原来是因为,在10.2.0.4.0(不包括)之后的WMSYS.WM_CONCAT查询出来的是CLOB类型的,因此需要进行to_char再进行distinct,order by,union等等其他操作,或者是换个方法:concatstr()和WM_CONCAT()方法是一样的效果。

以下列出查询例子以供理解

SELECT replace(concatstr(t.c_membercode||':'||t.c_membername),',',';') FROM tothermember T;

 

 

 SELECT replace(wm_concat(t.c_membercode||':'||t.c_membername),',',';') FROM tothermember T;

 

 

 SELECT replace(to_char(wm_concat(t.c_membercode||':'||t.c_membername)),',',';') FROM tothermember T;

 

 简单介绍一下:wm_concat函数:简单理解就是:将列转为行。此处要做的一个功能就是:查表做数据字典。

posted @ 2017-11-13 10:11  理解龙儿  阅读(7824)  评论(0编辑  收藏  举报