Caros,
Estou com um problema chato aqui e tem a ver com a mudança de versão do banco Oracle e do driver JDBC.
Antes usávamos o Oracle 8i (8.1.7) e agora usamos o 9i (9.2.0.6). Migramos de banco e tudo funciona normalmente, ou quase tudo. Vimos que alguns cursores ficam presos e segundo o Metalink devemos trocar a versão do driver JDBC (classes12_8.1.7.1.jar por ojdbc14.jar).
Porém, depois da troca do driver JDBC tive um erro de tipos do Java na hora de recuperar os valores do BD. Exemplo:
Quando eu chamo uma procedure do Oracle:
MINHA_PROC(USR IN VARCHAR2, ID OUT NUMBER)
Eu recupero assim no Java:
CallableStatement call = conn.prepareCall("{ call MINHA_PROC(?,?) }", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
call.setString(1, usuario);
call.registerOutParameter(2, OracleTypes.INTEGER);
call.executeQuery();
Integer id = (Integer) call.getObject(2);
Isso funciona bem com o driver ojdbc14.jar (9.2.0.5), porém dá erro de ClassCastException com o driver classes12_8.1.7.1.jar, pois com o driver do Oracle 8i ele devolve um BigDecimal ao invés de um Integer, mesmo eu tendo registrado o tipo como OracleTypes.INTEGER.
O problema de mudarmos do driver do 8i para o driver do 9i é que teremos erros de conversão em vários pontos do programa.
Alguém sabe como resolver esse problema da melhor maneira possível, minimizando as alterações no fonte da aplicação?
Obrigado
Daniel