sexta-feira, 23 de maio de 2014

Commit a cada bloco de Delete [Oracle];

Pessoal,

Para quem já passou por alguma necessidade de efetuar um DELETE em massa, com este Script podemos dar um commit a cada número de linhas deletadas.

No exemplo, a cada 3000 DELETES será feito um commit:

DECLARE
ln_DelSize                      NUMBER := 3000;
ln_DelCount                     NUMBER;

BEGIN
     LOOP
       DELETE FROM HR.EMPLOYEES
       WHERE rownum <= ln_DelSize;
 
       ln_DelCount := SQL%ROWCOUNT;
       dbms_output.put_line(ln_DelCount);

       EXIT WHEN ln_DelCount = 0;
       COMMIT;
     END LOOP;
END;

OBS: Caso for uma tabela com milhares de registros, aconselho utilizar um outro processo otimizado (muito mais rápido).
Post: http://dbaduarte.blogspot.com.br/2014/09/commit-cada-bloco-de-delete-otimizado.html

Valeu,
Bruno Duarte.

Nenhum comentário:

Postar um comentário