myBatis 调用oracle存储过程报错

飘过xxx 发布于 2014/01/02 11:15
阅读 979
收藏 0

我用myBatis 调用一个有多个参数+多个返回参数+一个游标 oracle存储过程,存储过程中有判断如果某个参数不正确,则直接返回不执行游标查询。这个时候myBatis会抛异常:

### Cause: java.sql.SQLException: Ref 娓告爣鏃犳晥
; uncategorized SQLException for SQL []; SQL state [null]; error code [17062]; Ref 娓告爣鏃犳晥; nested exception is java.sql.SQLException: Ref 娓告爣鏃犳晥
    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.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:368)
    at $Proxy4.selectOne(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:163)
    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)


求教大神该如何解决

加载中
0
飘过xxx
咋没人回复呢
0
宏哥
宏哥

不要用任何和ORM相关的封装

所有ORM相关的封装, 都是根据mysql 来封装的

mysql不是数据库

所以任何的ORM都不能完整的支持数据库的操作

xmut
xmut
楼主提到的是你最钟爱的Oracle,你是不是反应过激了,呵呵
0
宏哥
宏哥

回复 @xmut :  正是因为用了oracle或者其他任何真正的数据库

都会被 这些框架困扰。 

这些数据库框架的设计者, 基本上都被mysql F K过了。 

0
calvary
calvary

引用来自“宏哥”的答案

不要用任何和ORM相关的封装

所有ORM相关的封装, 都是根据mysql 来封装的

mysql不是数据库

所以任何的ORM都不能完整的支持数据库的操作

0
calvary
calvary

1.找到异常的存储过程。 在数据库端执行。 看会不会报异常。

2.如果 1 返回true .那么 你再检查。你用来接收的类型是什么类型. <至少是一个集合类型>  原因不用我多少了吧.. 

  自己检查下. 

0
飘过xxx
我在接收map里面给的类型是CURSOR,当存储过程中游标从来没开启过时,mybatis读取返回值是就出错了。
返回顶部
顶部