Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-01775:Schleifenkette von Synonymen, aber es gibt keine Synonyme

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.