INOUT parameters map to an array of the parameter type
in Java. (The method must take an array as its parameter.) This conforms to
the recommendations of the SQL standard.
Given the following example: CallableStatement call = conn.prepareCall(
"{CALL doubleMyInt(?)}");
// for inout parameters, it is good practice to
// register the outparameter before setting the input value
call.registerOutParameter(1, Types.INTEGER);
call.setInt(1,10);
call.execute();
int retval = call.getInt(1);
The method doubleIt should take a one-dimensional array
of ints. Here is sample source code for that method: public static void doubleMyInt(int[] i) {
i[0] *=2;
/* returns the first element of the array.*/
} The return value is not wrapped in an array
even though the parameter to the method is.
INOUT
Parameter Type Correspondence
JDBC Type
Array Type for Method Parameter
Value and Return Type
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 (only valid in Java2/JDBC 2.0 environments)
yourType[]
yourType
Register the output type of the parameter before executing the
call. For INOUT parameters, it is good practice to register the output parameter
before setting its input value.