Como fazer um Loop "commitar" por iteração

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
michelsilva
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 03 Out 2013 11:10 am

Boa tarde pessoal, estou com uma dúvida que não consigo sanar em lugar algum:

Tenho o seguinte bloco PL/SQL:

Selecionar tudo

Declare
cursor cursor_itens is  (select id from tb_items);
begin 
  for records in cursor_itens loop
     INSERT INTO TB_FILA (records.id, sysdate);
     commit;
  end loop;
end;
Gostaria de saber como eu posso commitar o cada iteração de "insert" em base, no instante em que o insert é executado no bloco, e não apenas no final da execução do bloco.

Porque preciso disso: O consumo da fila é baseado em tempo, se o bloco levar 3 minutos por exemplo, os primeiros commits terão o campo data três minutos anteriores ao fim da execução.

Se nesse meio tempo a fila consumiu alguém. que seja a 2m59s, esse registro não será processado.

Achei alguns casos, mas não parecem a melhor solução para meu caso.

Grato a quem possa dar um força.
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 317
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Olá.

Você já tentou o uso do FORALL?

Att.,
michelsilva
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 03 Out 2013 11:10 am

Era disso mesmo que eu precisava cara.

Gracias

:lol:
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 317
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Legal!!! :D
Responder
  • Informação
  • Quem está online

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