Jag har ingen aning om varför du får synonymfelet. Men det är mycket kod för något som borde vara en enda DELETE-sats. Jag antar att du har ändrat det till commit-every-n för att undvika återställningsfel. Det skulle vara trevligt om du kunde få din DBA att öka ångra utrymmet så att du faktiskt kan göra det arbete du behöver göra. Om det misslyckas tror jag att du fortfarande kan göra det mycket enklare:
LOOP
DELETE FROM log_master
WHERE last_changed_date < :purge_date
AND event_id = :event_id
AND rownum <= :batch_delete_limit
USING purge_date, event_id, l_bulk_collect_limit;
EXIT WHEN SQL%NOTFOUND;
END LOOP;
Och du kan kasta din logik för att försöka igen om du vill.
Ber om ursäkt om jag har missat någon subtilitet som gör det här annorlunda än vad du gör.