CallableStatementsとINOUT引数 java.sql.CallableStatementand INOUT parameters

Javaのプログラムでは、INOUT引数に対して引数の型を要素とする配列が対応します。(メソッドは配列を引数としてとらなければなりません。) この対応関係はSQL標準の推奨に沿ったものです。

次の例を考えます。: CallableStatement call = conn.prepareCall( "{CALL doubleMyInt(?)}"); // 値を代入する前に引数を登録する事が、 // inout引数では良いやり方です。 call.registerOutParameter(1, Types.INTEGER); call.setInt(1,10); call.execute(); int retval = call.getInt(1);

メソッドのdoubleItは一次元のint配列を取るべきです。メソッドのソースコードを次に例示します。 public static void doubleMyInt(int[] i) { i[0] *=2; /* は配列の最初の要素を返します。*/ } メソッドの引数と違って、返り値は配列ではありません INOUTの引数型の対応 JDBCの型 メソッドの引数の配列型 値と返り値の型 BIGINT long[] long BINARY byte[][] byte[] BIT boolean[] boolean DATE java.sql.Date[] java.sql.Date DOUBLE double[] double FLOAT double[] double INTEGER int[] int LONGVARBINARY byte[][] byte[] REAL float[] float SMALLINT short[] short TIME java.sql.Time[] java.sql.Time TIMESTAMP java.sql.Timestamp[] java.sql.Timestamp VARBINARY byte[][] byte[] OTHER yourType[] yourType JAVA_OBJECT (Java2/JDBC 2.0の環境でのみ有効) yourType[] yourType

呼び出し前に出力の引数を登録してください。INOUTの引数では、値を代入する前に出力の引数を登録するのが良いやり方です。