执行可调用语句时出现 SQLException
Posted
技术标签:
【中文标题】执行可调用语句时出现 SQLException【英文标题】:SQLException when executing a callablestatement 【发布时间】:2016-05-31 23:25:15 【问题描述】:我试图从我的 java 应用程序的包中调用一个过程,但收到一个错误。代码是这样设置的……
-----Java-----
Connection = conn;
String call_code="? = call MY_PROCEDURE.Process_vale(?,?,?)";
CallableStatement Process_cs=conn.prepareCall(call_code);
String bValue= "12345";
Process_cs.setString(1, bValue);
Process_cs.registerOutParameter(2, Types.INTEGER);
Process_cs.registerOutParameter(3, Types.VARCHAR);
Process_cs.execute();
程序设置如下:
PROCEDURE Process_value (bValue VARCHAR2, PN_CD OUT NUMBER, PN_MSG OUT VARCHAR2).....
我看到的错误是:
java.sql.SQLException: 索引处缺少 IN 或 OUT 参数:: 4
我很好奇为什么它提到索引 4,当过程只有 3 个参数时,我相信我在这里遗漏了一个关键事实。
【问题讨论】:
您似乎有一个未注册的参数;结果? =
【参考方案1】:
你在这里犯了一些严重的错误。首先,由于您正在调用一个过程,因此您不会获得任何返回值,因此只有函数可以具有返回值。因此,您必须按如下方式调用该过程。
String call_code="call MY_PROCEDURE.Process_vale(?,?,?)";
如果你的程序第一个参数是IN类型,其他两个参数是OUT类型,你可以成功执行。
【讨论】:
以上是关于执行可调用语句时出现 SQLException的主要内容,如果未能解决你的问题,请参考以下文章
关于MySQL5.6的limit和offset在命令行执行时出现的问题的记录