Oracle 10g 使用to_char(wm_concat()) 返回到程序中的不是字符串,怎样在数据库中使用sql语句进行类型的转换

Di1nuli 2012-02-07 05:59:44
在使用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)
有哪位前辈指点一二
...全文
1633 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
josh_wang 2013-06-25
  • 打赏
  • 举报
回复
想问一下楼主找到原因了么 我现在也碰到这个问题,调试了一整天都没找到原因
maomao800613 2012-04-09
  • 打赏
  • 举报
回复
to_char(WMSYS.WM_CONCAT('字段'))也会导致这个问题;原因出在内存分配不一致上(to_char和WM_CONCAT分配的内存大小不一致)。
Di1nuli 2012-02-07
  • 打赏
  • 举报
回复
现在发现,是在外层用了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

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧