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