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