Ich habe keine Ahnung, warum Sie den Synonymfehler erhalten. Aber das ist eine Menge Code für etwas, das eine einzelne DELETE-Anweisung sein sollte. Ich nehme an, Sie haben es in commit-every-n geändert, um Rollback-Fehler zu vermeiden. Es wäre schön, wenn Sie Ihren DBA dazu bringen könnten, den Undo-Bereich zu vergrößern, damit Sie tatsächlich die Arbeit erledigen können, die Sie erledigen müssen. Andernfalls denke ich, dass Sie es immer noch viel einfacher machen können:
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;
Und Sie können Ihre Wiederholungslogik darum herum werfen, wenn Sie möchten.
Entschuldigen Sie, wenn ich einige Feinheiten übersehen habe, die dies von dem unterscheiden, was Sie tun.