Ajuda com procedure

1 resposta
M

Esse é a assinatura da procedure:

Drop procedure if exists afmpb1.SP_lancamento;
Create PROCEDURE afmpb1.SP_lancamento(IN eValor Float, 
                            IN eCodFun INT, /*Funcionario que possui o cartão*/
                            IN eCodConv INT, /*Empresa que gerou a venda*/
                            IN eComprador VARCHAR(60), /*Quem realizou a compra*/
                            IN eUsuLanc VARCHAR(60), /*Quem efetuou o lançamento*/
                            OUT erro VARCHAR(30), 
                            OUT saldoAtu FLOAT,
                            OUT recibo INT)

esse é o codigo java que está chamando a procedure, porem não consigo pegar o retorno da procedure
fiz testes no editor sql ela funciona direitinho
Meu problema é que não consigo pegar esse retorno no java.
Alguem sabe o problema
ai vai meu codigo:

cst = con.prepareCall("{call SP_lancamento(?,?,?,?,?,?,?,?)}");
                            cst.setFloat(1, Float.valueOf(request.getParameter("vacolanc")));
                            cst.setInt(2, Integer.parseInt(codifunc));
                            cst.setInt(3, Integer.parseInt(codiconv));
                            cst.setString(4, request.getParameter("complanc"));
                            cst.setString(5, usualanc);
                            cst.registerOutParameter(6, Types.VARCHAR);
                            cst.registerOutParameter(7, Types.FLOAT);
                            cst.registerOutParameter(8, Types.INTEGER);
                            
                            rsCs = cst.executeQuery();
                            
                            while (rsCs.next()) {
                            String erro = rsCs.getString("erro");
                            int recibo = rsCs.getInt("recibo");
                            Float saldoAtu = rsCs.getFloat("saldoAtu");
                            }

gera a seguinte exceção quando está na linha do while.
java.sql.SQLException: ResultSet is from UPDATE. No Data.

1 Resposta

M

Pessoal descobri o erro, caso alguém leia e tenha o mesmo problema
minha procedure retorna paramêtros de saída e não retorna um resultset
então tenho que pegar pela descrição do parametro de saida.
fiz da seguinte maneira:

String erro = cst.getNString("erro");

Também estou aberto para sugestões. Se alguém tem uma maneira melhor de
recuperar esses paramêtros de saída.

Criado 15 de março de 2011
Ultima resposta 15 de mar. de 2011
Respostas 1
Participantes 1