在 Oracle JDBC 中是不是可以批量存储过程调用和检索 OUT 参数?

Posted

技术标签:

【中文标题】在 Oracle JDBC 中是不是可以批量存储过程调用和检索 OUT 参数?【英文标题】:in Oracle JDBC is it possible to batch stored procedure calls and retrieve OUT parameters?在 Oracle JDBC 中是否可以批量存储过程调用和检索 OUT 参数? 【发布时间】:2012-06-07 04:46:09 【问题描述】:

我在像 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 =  ?

谢谢

【问题讨论】:

【参考方案1】:

很遗憾,没有。

进行批量更新的能力与 CallableStatement 相同 对象,因为它是 PreparedStatement 对象。事实上,一个 CallableStatement 对象仅限于与 一个 PreparedStatement 对象。更准确地说,当使用批处理时 更新设施,CallableStatement 对象只能调用存储 带输入参数或根本不带参数的过程。

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

【讨论】:

以上是关于在 Oracle JDBC 中是不是可以批量存储过程调用和检索 OUT 参数?的主要内容,如果未能解决你的问题,请参考以下文章

java 在oracle中执行插入哪种方式比较快

如果一条记录在 oracle 中插入失败,则避免 jdbc 批量插入失败

oracle 在xml中批量插入,批量修改及多组条件查询

toad for oracle可否批量导出存储过程

Oracle批量导出存储过程(保持每个存储过程独立)

Oracle 11g JDBC 预取键