Jeg aner ikke hvorfor du får synonymfejlen. Men det er meget kode for noget, der burde være en enkelt DELETE-sætning. Jeg går ud fra, at du har ændret det til commit-every-n for at undgå rollback-fejl. Det ville være rart, hvis du kunne få din DBA til at øge fortryd-pladsen, så du rent faktisk kan udføre det arbejde, du skal udføre. Hvis det ikke lykkes, tror jeg, du stadig kan gøre det meget enklere:
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;
Og du kan kaste din logik til at prøve igen, hvis du vil.
Undskyld, hvis jeg har savnet en eller anden finesse, der gør dette anderledes end det, du laver.