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

Interaktion der SELECT FOR UPDATE-Sperre mit Cursor und Batch-DML

Klingt so, als ob das Problem darin besteht, dass Sie Millionen von Zeilen löschen müssen und dies daher im Bach erledigen möchten

Wenn ja, könnte dies für Sie funktionieren - es wird Zeilen durchlaufen und löschen und festschreiben, sodass Ihnen die Undo-Funktion nicht ausgeht und Sie sich keine Gedanken über das Sperren von Zeilen machen müssen

begin
   loop
      delete from xx where yyy=zzz and rownum < 1000;
      exit when sql%rowcount = 0;
      commit;
   end loop;
   commit;
end;
/