Cursor com uma linha invalida.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
sbin
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 03 Set 2009 3:49 pm
Localização: Minas

Colegas,

tenho procedure q tem um cursor, quando eu pego o select dela e rodo, tras somente uma linha de código.
Quando vou ler o cursor, ou melhor, criei um pl/sql e coloquei o dbms para saida... coloquei ele dentro do LOOP, percebi q este era o erro, retorna mais de uma linha no cursor.

Selecionar tudo

CURSOR cursor1 IS

    SELECT DISTINCT

           campo_1,

           campo_2

      FROM tabela_1

     WHERE coluna_tabela = 'XXXX'

       AND coluna_tabela = 1;

aqui eu coloquei um outro loop

Selecionar tudo

FOR C1 IN cursor1  LOOP
  dbms lista duas vezes, uma mostrando o codigo e outro nulo
  dbms_output.put_line('x_mensagem_aux = ' || cursor_loop.coluna_1.campo_2);

END LOOP;



FOR cursor_loop IN cursor1 LOOP

      IF cursor_loop.coluna_1 IS NULL THEN

        BEGIN

          SELECT DISTINCT        erro acontece aqui

                 coluna_1

            INTO variavel

            FROM tabela_2

           WHERE campo_2 = cursor_loop.coluna_1.campo_2;
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Qual o erro que esta disparando??
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Se eu tivesse que puxar uma bola de cristal, eu diria que pode ser culpa do distinct. Talvez você esteja rodando "na mão" com o distinct em campos diferentes do que há no cursor da procedure. Ou não... pois você não postou código real e executado. Tenta postar o que você executou de verdade e o retorno real, ou a gente pode ficar aqui o dia inteiro chutando sem ter a menor ideia do que está acontecendo.
sbin
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 03 Set 2009 3:49 pm
Localização: Minas

Colegas já descrobri, reiniciei o PL/SQL developer e não apareceu mais.

Obrigado!
Responder
  • Informação