Ref cursor

CallableStatement cs = con.prepareCall("{call EBT_TELACORE_CAT.EBT_TELACORE_IDENT_BASE01(?)}");
cs.setInt(1, 1); //parâmetro 1 - tipo
cs.setString(2, “07713688887”); //parâmetro 2 - documento
cs.registerOutParameter(3,java.sql.Types.VARCHAR); //parâmetro 3 q é out - tenho q converter esse java.sql.Types.VARCHAR para um tipo de variável REF CURSOR do Oracle. Como faço isso?

        cs.executeQuery();

Seu código:

cs.registerOutParameter(3, java.sql.Types.VARCHAR);

Mude para:

cs.registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);

[quote=“eaduarte”]Seu código:

cs.registerOutParameter(3, java.sql.Types.VARCHAR);

Mude para:

cs.registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);[/quote]

Amigão, coloquei o oracleJDBC.jar no class path, estou usando IDE NetBeans e mesmo assim está dando o seguinte erro: package oracle.jgbl does not exist

tem alguma solução, acho que essa é a melhor maneira para resolver o meu problema.

a outra solução seria criar um pl-sql e jogar para o java, só que está sua solução foi show de bola, o único problema e colocar pra funcionar…

Grato.

Trabalho com Eclipse e tive que incluir a API do Oracle JDBC (oraclejdbc.jar) em:
–> Propriedades do projeto
–> Caminho de construção Java
–> Bibliotecas
–> Incluir JARs externos

[quote=“eaduarte”][quote=“dgomesbr”]
Amigão, coloquei o oracleJDBC.jar no class path, estou usando IDE NetBeans e mesmo assim está dando o seguinte erro: package oracle.jgbl does not exist

tem alguma solução, acho que essa é a melhor maneira para resolver o meu problema.
[/quote]

Trabalho com Eclipse e tive que incluir a API do Oracle JDBC (oraclejdbc.jar) em:
–> Propriedades do projeto
–> Caminho de construção Java
–> Bibliotecas
–> Incluir JARs externos[/quote]

Eduarte, consegui colocar assim:

  CallableStatement cs = con.prepareCall("{call IDENT_BS01(?,?,?)}");

        cs.setInt(1, 1);
        System.out.println("parametro 1");
        cs.setString(2, "11111111");
        System.out.println("parametro 2");
        cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR); 
        System.out.println("parametro 3");
        
        cs.execute(); 
        
        if( cs.getString(3) == null){    
            String mensagem =  cs.getString(3); 
            System.out.println(mensagem); 
        } 

Só que o valor de mensagem está sendo null, quando na realidade tinha q vir alguma coisa…

tem alguma dica.

[quote=“dgomesbr”]
if( cs.getString(3) == null){
String mensagem = cs.getString(3);
System.out.println(mensagem);
}

Só que o valor de mensagem está sendo null, quando na realidade tinha q vir alguma coisa…

tem alguma dica.[/quote]

Para referenciar um REF CURSOR no Java vc deve utilizar o método getObject() e fazer um CAST p/ o ResultSet e depois utilizar o getString p/ capturar o valor de cada campo.

Exemplo:


ResultSet rs = (ResultSet) cs.getObject(3);
            
while (rs.next()) {
    System.out.println(cs.getString("item"));
    System.out.println(cs.getString("descricao"));
 }
// Nesse exemplo o REF CURSOR retorna os campos "item" e "descricao" 
// através da consulta: 
//   SELECT item,  descricao
//      FROM cad_itens;

Blz?