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);
public static void doubleMyInt(int[] i) {
i[0] *=2;
/* Derbyは配列の最初の要素を返します。*/
}
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の引数では、値を代入する前に出力の引数を登録するのが良いやり方です。