myBatis 调用oracle存储过程报错
我用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)
求教大神该如何解决
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我在接收map里面给的类型是CURSOR,当存储过程中游标从来没开启过时,mybatis读取返回值是就出错了。
1.找到异常的存储过程。 在数据库端执行。 看会不会报异常。
2.如果 1 返回true .那么 你再检查。你用来接收的类型是什么类型. <至少是一个集合类型> 原因不用我多少了吧..
自己检查下.
不要用任何和ORM相关的封装
所有ORM相关的封装, 都是根据mysql 来封装的
mysql不是数据库
所以任何的ORM都不能完整的支持数据库的操作
回复 正是因为用了oracle或者其他任何真正的数据库
都会被 这些框架困扰。
这些数据库框架的设计者, 基本上都被mysql F K过了。
楼主提到的是你最钟爱的Oracle,你是不是反应过激了,呵呵
不要用任何和ORM相关的封装
所有ORM相关的封装, 都是根据mysql 来封装的
mysql不是数据库
所以任何的ORM都不能完整的支持数据库的操作
咋没人回复呢