Saya tidak tahu mengapa Anda mendapatkan kesalahan sinonim. Tapi itu banyak kode untuk sesuatu yang seharusnya menjadi satu pernyataan DELETE. Saya berasumsi Anda telah mengubahnya menjadi commit-every-n untuk menghindari kesalahan rollback. Akan lebih baik jika Anda bisa membuat DBA Anda meningkatkan ruang undo sehingga Anda benar-benar dapat melakukan pekerjaan yang perlu Anda lakukan. Jika gagal, saya pikir Anda masih bisa membuatnya lebih sederhana:
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;
Dan Anda dapat menggunakan logika coba lagi jika Anda mau.
Maaf jika saya melewatkan beberapa kehalusan yang membuat ini berbeda dari apa yang Anda lakukan.