Problemas com ResultSet

2 respostas
B

Olá pessoal
Preciso da ajuda de vocês para resolver o problema dos dados contidos em um ResultSet. Segue o código:

public void buscar() {
    try {
      CallableStatement cstmt = conn.prepareCall("{call SP_BUSCA_CODIGO_CLIENTE}",rs.TYPE_SCROLL_SENSITIVE,rs.CONCUR_UPDATABLE);
      cstmt.execute();
      rs = cstmt.getResultSet();
      
      while (rs.next()) { //Percorre o ResultSet rs para extrair o dado
        System.out.println(rs.getString("codigocliente")); //Para teste
      }
    }
    catch(SQLException sqlex) {
      sqlex.printStackTrace();
    }
  }

Pois é, a chamada da procedure deveria retornar dois (2) registros, porém está retornando somente o primeiro!
Essa impressão (System.out.println) é só para teste, onde ele imprime um único dado (o primeiro) já que o rs só está com um dado!
Já tentei com Vector, ArrayList, a estrutura for, mas nada!
Estou usando Firebird e o código da procedure segue abaixo:

begin
  /* Procedure Text */
  for
    select cpfcnpj from cliente into :codigocliente
  do
  suspend;
end

Onde cliente é a tabela e :codigocliente o parâmetro de saída ou o retorno da procedure (retorno para o ResultSet). No teste no IBExpert(Firebird) ele retorna os dois registros, mas na aplicação não!!!

Desde já agradeço pela ajuda!

Abraços, Bethyan Kelly! :wink:

2 Respostas

D

Olá brother. Desculpe me meter, mesmo pq eu não entendo muito, além do mais de FireBird. Mas eu estava dando uma olhada no seu código e das duas uma, ou eu não entendi bem ou tem há algo de estranho, pois vc tá chamando a procedure SP_BUSCA_CODIGO_CLIENTE, mas lá embaixo qdo vc mostra o código da procedure eu não vejo este nome, é assim mesmo no Firebird. Pois ao menos no PostgreSQL, q eu tô acostumado a trabalhar (bom, trabalhar, não faço porra nenhuma, é modo de falar dos esperimentos malucos q faço), qdo crio alguma procedure tenho q dar um nome a ela. Vê isso aí. Blz.

B

Ah, depende! É que eu peguei só a parte do select! O nome vc coloca em um campo acima! Se vc for em uma das abas, DDL, e quiser copiar tudo, também da certo, daí aparece o nome!
Ou se fizer no braço: create procedure sp_busca_codigo_cliente etc etc!
Mas o código “funcional” é isso mesmo!!!
Té+!!!

Criado 14 de agosto de 2005
Ultima resposta 18 de ago. de 2005
Respostas 2
Participantes 2