【发布时间】:2019-02-19 11:34:30
【问题描述】:
我有一个 JDBC 连接到一个 Oracle RDBMS。
我需要调用一个返回数字的存储过程(我们将其命名为 foo)。
如果我为自己执行每条语句,它就可以正常工作。
for (int i = 0; i < 10;i ++)
{
CallableStatement cst = con.prepareCall ("{? = foo (" + i + ")}");
cst.registerOutParameter (1, Types.INTEGER);
cst.execute ();
}
现在我喜欢使用批处理来提高性能。这就是我的方法。
Statement st = con.createStatement ();
for (int i = 0; i < 10;i ++)
{
st.addBatch ("{? = foo (" + i + ")}");
}
st.executeBatch ();
这行不通。
错误告诉我并非每个变量都已分配。认为这是因为在上面的工作示例中没有注册返回值。
如果我将语句设置为
{foo (" + i + ")}
要删除返回,然后我会收到未定义过程的错误。
如何在批处理中处理这种带有返回值的存储过程?
【问题讨论】: