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 retorna o primeiro elemento da matriz. */
}
O valor retornado não é empacotado em uma matriz, mesmo que o
parâmetro para o método seja.
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.