Migração de banco de dados => Problemas com procedures

Ola pessoal,
No lugar onde trabalho, estamos migrando de banco, do SQL Server, pro PostGreSQL.

Td o acesso ao banco e feito por meio de procedures, (Callable Statements). E um pre-requisito da migração, e que os fontes Java, não sejam mechidos.
É aí que aparece o meu maior problema. As procedures do SQL, podem devolver vários campos, já do post não, pois funcionam como funções; assim, qnd é necessário devolver vários campos, eles vem em um “refcursor”.

Os CallableStatements do SQL estão +/- assim:

Usuario user = new Usuario();
Connection con = Conexao.getConnection(SQL_SERVER);
CallableStatement cs = con.prepareCall("{ call pro_consulta( ?, ?, ? ) }");
cs.setInt( 1, user.getCodigo() );
cs.registerOutParameter(2, java.sql.Types.VARCHAR);
cs.registerOutParameter(3, java.sql.Types.VARCHAR);
cs.executeUpdate();

user.setNome(cs.getString(2));
user.setPais(cs.getString(3));

Já os CallableStatements do PostGre, teriam q pegar um refcursor, e não os valores diretos:


// Turn transactions off.
con.setAutoCommit(false);

Usuario user = new Usuario();
Connection con = Conexao.getConnection(POSTGRES_QL);

// Procedure call.
CallableStatement proc = con.prepareCall("{ ? = call pro_consulta ( ? ) }");
proc.registerOutParameter(1, Types.Other);
proc.setInt( 2, user.getCodigo() );
proc.executeUpdate();
ResultSet results = (ResultSet) proc.getObject(1);
while (results.next()) {
  user.setNome( results.getString(1) );
  user.setPais( results.getString(2)) ;
}
results.close();
proc.close();

Não consegui enxergar nenhuma maneira de não ter que alterar todos os fontes. Talvez sobrescrevendo o metodo executeUpdate();, para que ele faça um tipo de “parse”. Mas não creio que seja a maneira mais “elegante”.

Alguém tem uma luz?