9

我在像 f(a IN, b IN, c OUT) 这样的 Oracle 11g 数据库中有一个存储过程。我想以批处理模式从 JDBC 调用它,然后读取所有 OUT 变量。
这可能吗?到目前为止我有这个

  CallableStatement statement = connection.prepareCall("f(?, ?, ?)");
  for(Item i : items) {
     int i = 0;
     statement.setString(++i, item.getA());
     statement.setString(++i, item.getB());
     statement.registerOutParameter(++i, Types.NUMERIC);
     statement.addBatch();
  }
  statement.executeBatch();
  int[] answers =  ?

谢谢

4

1 回答 1

7

可悲的是没有。

CallableStatement 对象的批量更新能力与 PreparedStatement 对象的能力相同。事实上,CallableStatement 对象被限制为与 PreparedStatement 对象具有相同的功能。更准确地说,当使用批量更新工具时,CallableStatement 对象只能调用带有输入参数或根本不带参数的存储过程。

参考:http ://docs.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/callablestatement.html#1000220

于 2012-06-02T01:58:10.383 回答