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