9

f(a IN、b IN、c OUT)のようなOracle11gデータベースにストアドプロシージャがあります。バッチモードで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 に答える