Dúvida com Loop x Cursor

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Avatar do usuário
tiago_pimenta
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 213
Registrado em: Qua, 29 Jun 2011 9:49 am
Localização: Barretos / SP

Pessoal, boa tarde.

Estou com um problema aqui e gostaria da ajuda de vocês. Preciso pegar os valores de um cursor e jogar num bloco no forms, até ai tudo bem, só que o problema é o seguinte, na situação que estou testando aqui, o cursor retorna dois registros, mas no bloco além dos dois registros, ele fica posicionado no registro que seria o numero 3, ou seja, ele está dando um next_record a mais. Abaixo segue o código que estou usando e queria que vocês me ajudassem a ver onde estou errando:

-- Declaração do Cursor --

cursor c3 is
select t.campo
from tabela t
where t.campo2 = v_ariavel;

-- Inserindo os dados no bloco
go_block('bloco');

open c3;
loop
fetch c3 into :bloco.campo;

exit when c3%notfound or c3%notfound is null;
next_record;
end loop;
close c3;

Ele está passando 2x no next_record, agora como faço para ele passar 1x só e deixar o registro sempre no último inserido ???

Att.

Tiago Pimenta
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Olá,
talvez no ultimo campo do bloco, coloque como "Salto Automático" = Não.
tora34
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 108
Registrado em: Qua, 12 Nov 2008 6:01 pm
Localização: Campo Mourão PR
Renato Pasquini
Oracle Developer

Bom dia Tiago,
a variavel notfound do cursor c3 recebe valor true apenas quando é executado a função fetch into.
Ou seja há um erro lógico neste seu código.
--
Altere o OPEN...FETCH..CLOSE para o FOR .. LOOP. É mais fácil e pratico.
--
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes