CallableStatement e parâmetros INOUT java.sql.CallableStatemente 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 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.