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.
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);
public static void dobreMeuInteiro(int[] i) {
i[0] *=2;
/* O Derby retorna o primeiro elemento da matriz. */
}
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.