CallableStatement e par??metros INOUT

Os par??metros INOUT s??o mapeados em uma matriz do tipo do par??metro no Java (O m??todo deve receber uma matriz como seu par??metro). Isto est?? em conformidade com as recomenda????es do padr??o SQL.

Dado o seguinte exemplo:
CallableStatement call = conn.prepareCall(
    "{CALL dobreMeuInteiro(?)}");
// para os par??metros INOUT, ?? boa pr??tica registrar
// o par??metro de sa??da antes de definir o valor de entrada
call.registerOutParameter(1, Types.INTEGER);
call.setInt(1,10);
call.execute();
int retval = call.getInt(1);
O m??todo doubleIt deve receber uma matriz unidimensional de inteiros. Abaixo est?? um c??digo fonte de amostra para este m??todo:
public static void dobreMeuInteiro(int[] i) {
    i[0] *=2;
    /* O Derby  retorna o primeiro elemento da matriz. */
}
Nota: O valor retornado n??o ?? empacotado em uma matriz, mesmo que o par??metro para o m??todo seja.
Tabela 1. Correspond??ncia de tipo do par??metro INOUT
Tipo do JDBC Tipo da matriz para o par??metro do m??todo Valor e tipo retornado
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 seuTipo[] seuTipo
JAVA_OBJECT (v??lido apenas nos ambientes Java2/JDBC 2.0) seuTipo[] seuTipo

Deve ser registrado o tipo de dado de sa??da do par??metro antes de executar a chamada. Para os par??metros INOUT, ?? boa pr??tica registrar o par??metro de sa??da antes de definir seu valor de entrada.

Refer??ncias relacionadas
CallableStatement e par??metros OUT