JAVA调用ORACLE存储过程出错

代码publicvoidunpack(Stringpc,Stringxqdm)throwsSQLException{Sessionsession=getHibernate... 代码
public void unpack(String pc,String xqdm)throws SQLException {
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
Connection conn = session.connection();
// CallableStatement cstmt = null;
try {
CallableStatement cstmt = conn.prepareCall("{Call PKG_I_DFXM.PRC_I_NBBPCF(?,?,?,?,?)");
cstmt.setString(1, pc);
cstmt.setString(2, xqdm);
cstmt.setString(3, "n");
cstmt.registerOutParameter(4, OracleTypes.NUMBER);
cstmt.registerOutParameter(5, OracleTypes.VARCHAR);
cstmt.execute();
// int xcode = cstmt.getInt(4);
// String errormsg = cstmt.getString(5);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
错误代码

不好意思阿,只有5的财富可悬赏了
java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.StringIndexOutOfBoundsException: String index out of range: 40
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62)
at
展开
 我来答
大话残剑
推荐于2018-01-08 · TA获得超过2217个赞
知道大有可为答主
回答量:1137
采纳率:56%
帮助的人:707万
展开全部
从报错看是字符串索引超出范围,需要看存储过程的执行结果。
可以在sqlplus中执行exec PKG_I_DFXM.PRC_I_NBBPCF(你的参数)看下结果。
binghua111q
2018-01-08
知道答主
回答量:4
采纳率:0%
帮助的人:3986
展开全部
存储过程创建时参数定义有问题吧,我的就是这种情况。IN ' abc' varchar(30), 参数中有空格报的异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式