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の引数では、値を代入する前に出力の引数を登録するのが良いやり方です。