CallableStatements and INOUT parameters INOUT parameters map to an array of the parameter type in the Java programming language. (The method must take an array as its parameter.) This conforms to the recommendations of the SQL standard. java.sql.CallableStatementand INOUT parameters

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.

The following table shows the parameter array types and return types that correspond to JDBC types.

INOUT parameter type correspondenceThis table lists the JDBC data types and provides the parameter array type and return type for each. JDBC Type Array Type for Method Parameter Value and Return Type BIGINT long[] long BINARY byte[][] byte[] BLOB java.sql.Blob[] java.sql.Blob BOOLEAN boolean[] boolean CLOB java.sql.Clob[] java.sql.Clob 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 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.