执行callablestatement时的SQLException

时间:2016-05-31 23:25:16

标签: java plsql package procedure callable-statement

我试图从我的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:在index :: 4

处缺少IN或OUT参数

我很好奇它为什么提到4的索引,当程序只有3个参数时,我相信我在这里错过了一个关键的事实。

1 个答案:

答案 0 :(得分:0)

你在这里犯了一些严重的错误。首先因为您正在调用一个过程,您将不会获得任何返回值,只有函数可以具有返回值。所以你必须按如下方式调用该程序。

String call_code="{call MY_PROCEDURE.Process_vale(?,?,?)}";

如果您的过程第一个参数是IN类型而其他两个参数是OUT类型,则可以成功执行此操作。