Tipo Variável

9 respostas
D

Pessoal, bom dia, alguém sabe me dizer que tipo de variável no java representa o REF CURSOR do oracle?

Grato

9 Respostas

E

Eu utilizo oracle.jdbc.OracleTypes.CURSOR.

Exemplo:
CallableStatement st =
      conn.prepareCall( "{? = call PKG_CONSULTA.FC_PEDIDOS_PENDENTES(?,?,?,?,?,?,?,?,?,?)}");

            // Recordset de saida
            st.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);

            //Parametros de entrada
            st.setString(2, pPedido[0]);        //Numero do pedido
            st.setString(3, codigoItem[0]);    //Codigo do item
            st.setString(4, pPedCli[0]);         //Numero do pedido do cliente
            st.setString(5, dtNecIni[0]);        //Data da necessidade inicial
            st.setString(6, dtNecFin[0]);        //Data da necessidade final
            st.setString(7, codigoCliente[0]); //Codigo do Cliente

            //Parametros de saida
            st.registerOutParameter(8, java.sql.Types.FLOAT); //Valor total
            st.registerOutParameter(9, java.sql.Types.INTEGER); //Total de itens distintos
            st.registerOutParameter(10, java.sql.Types.VARCHAR); //Numero do erro
            st.registerOutParameter(11, java.sql.Types.VARCHAR); //Descricao do erro

            //Executa a procedure
            st.execute();

            //Resultset
            ResultSet rs = (ResultSet) st.getObject(1);
D
"eaduarte":
Eu utilizo oracle.jdbc.OracleTypes.CURSOR. Exemplo:
CallableStatement st =
      conn.prepareCall( "{? = call PKG_CONSULTA.FC_PEDIDOS_PENDENTES(?,?,?,?,?,?,?,?,?,?)}");

            // Recordset de saida
            st.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);

            //Parametros de entrada
            st.setString(2, pPedido[0]);        //Numero do pedido
            st.setString(3, codigoItem[0]);    //Codigo do item
            st.setString(4, pPedCli[0]);         //Numero do pedido do cliente
            st.setString(5, dtNecIni[0]);        //Data da necessidade inicial
            st.setString(6, dtNecFin[0]);        //Data da necessidade final
            st.setString(7, codigoCliente[0]); //Codigo do Cliente

            //Parametros de saida
            st.registerOutParameter(8, java.sql.Types.FLOAT); //Valor total
            st.registerOutParameter(9, java.sql.Types.INTEGER); //Total de itens distintos
            st.registerOutParameter(10, java.sql.Types.VARCHAR); //Numero do erro
            st.registerOutParameter(11, java.sql.Types.VARCHAR); //Descricao do erro

            //Executa a procedure
            st.execute();

            //Resultset
            ResultSet rs = (ResultSet) st.getObject(1);

OK, acho que a solução é essa mesmo, só que não estou conseguindo usar o oracle.jdbc.OracleTypes.CURSOR.

tenho que fazer algum import?

E

“dgomesbr”:

OK, acho que a solução é essa mesmo, só que não estou conseguindo usar o oracle.jdbc.OracleTypes.CURSOR.

tenho que fazer algum import?

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

D

“eaduarte”:
“dgomesbr”:

OK, acho que a solução é essa mesmo, só que não estou conseguindo usar o oracle.jdbc.OracleTypes.CURSOR.

tenho que fazer algum import?

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

ok, acho simples, uso o netbeans e é praticamente a mesma coisa. o problema é que não tenho o oraclejdbc.jar, poderia me dizer onde consigo?

D

“dgomesbr”:
“eaduarte”:
“dgomesbr”:

OK, acho que a solução é essa mesmo, só que não estou conseguindo usar o oracle.jdbc.OracleTypes.CURSOR.

tenho que fazer algum import?

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

ok, acho simples, uso o netbeans e é praticamente a mesma coisa. o problema é que não tenho o oraclejdbc.jar, poderia me dizer onde consigo?

já consegui o .jar… valeus.

D

“dgomesbr”:
“dgomesbr”:
“eaduarte”:
“dgomesbr”:

OK, acho que a solução é essa mesmo, só que não estou conseguindo usar o oracle.jdbc.OracleTypes.CURSOR.

tenho que fazer algum import?

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

ok, acho simples, uso o netbeans e é praticamente a mesma coisa. o problema é que não tenho o oraclejdbc.jar, poderia me dizer onde consigo?

já consegui o .jar… valeus.

amigo, só mais uma coisa, colocando o .jar no class path já funciona? tenho que dá algum import?

E

“dgomesbr”:

amigo, só mais uma coisa, colocando o .jar no class path já funciona? tenho que dá algum import?

Tentei setar o .jar no classpath, mas não funcionou…

D

“eaduarte”:
“dgomesbr”:

amigo, só mais uma coisa, colocando o .jar no class path já funciona? tenho que dá algum import?

Tentei setar o .jar no classpath, mas não funcionou…

Eduarte, funcionou, mais o problema agora é o retorno, veja só:
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?

E
<blockquote><div class="quote-author">“dgomesbr”:</div>

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.

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?

Criado 15 de julho de 2004
Ultima resposta 16 de jul. de 2004
Respostas 9
Participantes 2