在使用ibatis的时候,to_char(wm_concat())合并行后返回到程序中时,抛异常
ERROR [org.mortbay.log] - <Nested in org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [99999]; error code [22922];   
--- The error occurred in sqlmap/embe/areaCoverage/LogisticAreaCoverage.xml.  
--- The error occurred while applying a parameter map.  
--- Check the areaLogisticAreaCoverage.getAreaCoverageByCityId-InlineParameterMap.  
--- Check the statement (query failed).  
--- Cause: java.sql.SQLException: ORA-22922: nonexistent LOB value
; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in sqlmap/embe/areaCoverage/LogisticAreaCoverage.xml.  
--- The error occurred while applying a parameter map.  
--- Check the areaLogisticAreaCoverage.getAreaCoverageByCityId-InlineParameterMap.  
--- Check the statement (query failed).  
--- Cause: java.sql.SQLException: ORA-22922: nonexistent LOB value
:>
org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [99999]; error code [22922];   
--- The error occurred in sqlmap/embe/areaCoverage/LogisticAreaCoverage.xml.  
--- The error occurred while applying a parameter map.  
--- Check the areaLogisticAreaCoverage.getAreaCoverageByCityId-InlineParameterMap.  
--- Check the statement (query failed).  
--- Cause: java.sql.SQLException: ORA-22922: nonexistent LOB value
; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in sqlmap/embe/areaCoverage/LogisticAreaCoverage.xml.  
--- The error occurred while applying a parameter map.  
--- Check the areaLogisticAreaCoverage.getAreaCoverageByCityId-InlineParameterMap.  
--- Check the statement (query failed).  
--- Cause: java.sql.SQLException: ORA-22922: nonexistent LOB value at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:203)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:293)
at xueshenghui.platform.dao.AppAreaCoverageDao.getAreaCoverageByCityId(AppAreaCoverageDao.java:69)
at xueshenghui.platform.service.AppAreaCoverageService.getAreaCoverageByCityId(AppAreaCoverageService.java:99)
at xueshenghui.platform.controller.PfAreaCoverageController.getAreaCoverageByCityId(PfAreaCoverageController.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at xueshenghui.admin.filter.UserLoginFilter.doFilter(UserLoginFilter.java:37)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
有哪位前辈指点一二

解决方案 »

  1.   

    现在发现,是在外层用了oracle分页,分页后导致这个错误内层select city_id,
                                  city_name,
                                  to_char(substr(wm_concat(logistic), 1, 4000)) logistics,
                                  to_char(substr(wm_concat(coverage), 1, 4000)) coverage
                             from (select a.city_id,
                                          c.city_name,
                                          a.logistic,
                                          a.coverage
                                     from embe_area_coverage a
                                     join embe_logistics_company b
                                       on a.logistic = b.logistics_company_en
                                     join app_city c
                                       on c.id = a.city_id
                                    where c.city_parent_id = 14812
                                      and c.city_type = 4)
                            group by city_id, city_name
    在这个之外 加上个
    select *               from( 
                       select city_id,city_name,logistics,coverage,ROWNUM RN
    ...
    ) t1
        WHERE ROWNUM <= $start$ + $limit$
            )t2
       WHERE t2.RN >= $start$
    之后就出现了这个问题,请问可不可以这样理解:
    内层的争取,可是当我用了分页后,由于某种原因那些字段又变成clob的类型,原先wm_concat(logistic)是clob
      

  2.   

    to_char(WMSYS.WM_CONCAT('字段'))也会导致这个问题;原因出在内存分配不一致上(to_char和WM_CONCAT分配的内存大小不一致)。