Estou executando um PL/SQL dinamico que faz um cursor, isto é executado tando em Oracle como em SQLServer. A duvida é: como faço para pagar este cursor e colocar em um ResultSet ? O codigo é o seguinte:
String vplsql = "declare " +
" total number := 0; " +
"begin " +
" open ? for select username,created,profile " +
" from users; " +
" ? := total + 100; " +
"end;";
CallableStatement executa = conn.prepareCall(vplsql);
Aham, não é mais fácil executar a query diretamente, em vez de tentar usar um cursor?
(se bem que deve haver alguma classe oracle.* no classes.zip que suporte cursores diretamente em Java. )
Este é um PL/SQL dinamico, quem digita é o usuário. Para o Oracle sem problema ja seu como fazer, mas gostaria de fazer de uma forma que seja generico para todos os bancos.
CURSOR é uma coisa que não faz parte do JDBC.
Portanto o suporte a cursores é dependente do banco de dados.
Por exemplo, no Oracle é possível usar variáveis REF CURSOR em programas Java, e usar a variável como se fosse um ResultSet normal. (baixe o guia “JDBC Developer’s Guide and Reference” no OTN - otn.oracle.com )
Acho que você está com cursores na cabeça. Um conjunto de dados (resultset) é algo que é suportado pelo JDBC para todos os bancos, mas um cursor já é um detalhe de implementação (que existe nos bancos SQL que suportam stored procedures) cujo suporte normalmente requer classes fora do JDBC, como é o caso do Oracle (pacotes oracle.sql.* )