sexta-feira, 16 de maio de 2014

Criando Cursor Oracle Delete de 1000 em 1000 linhas


Olá neste post mostrarei um CURSOR Oracle para realizar um DELETE de uma tabela do Sistema de LOG do iFrota, para realizar o Commit de 1000 em 1000 registros.

Em um PL/SQL adaptar a rotina para sua base em questão e executar o comando.


declare 
cursor c1 is
select base, cod_log, data_hora, cod_tipo, cod_situacao, versao, usuario, 
       usuario_nome, computador, identificador, descricao, mensagem, chave_agr, sequencia 
       from ifrota.ifrota_log where base ='4' and data_hora <= '28/05/2013' ;
v number;
begin
v:= 0;
       for r1 in c1 loop
         v := v + 1;
dbms_output.put_line(r1.sequencia||'-'||r1.chave_agr||'-'||r1.base||'-'||r1.data_hora);
         delete ifrota.ifrota_log where sequencia = r1.sequencia;
         if v >= 1000 then
           commit;
           v := 0;
         end if;
       end loop;
    end;
/

Select base utilizado para rodar o CURSOR.

select base, cod_log, data_hora, cod_tipo, cod_situacao, versao, usuario, 
       usuario_nome, computador, identificador, descricao, mensagem, chave_agr, sequencia 
       from ifrota.ifrota_log where base ='4' and data_hora <= '28/05/2013'




Nenhum comentário:

Postar um comentário