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

Wählen Sie Bulk Collect in Oracle Example aus

Im vorherigen Blog-Beitrag habe ich ein Beispiel für die Verwendung von Oracle Bulk Collect unter Verwendung des Objekts „Cursor Rowtype Type“ gegeben. Dadurch wird zuerst der Cursor erstellt, dann das Objekt des Cursortyps eingegeben und dann der Cursor geöffnet, in die Massenerfassung abgerufen und schließlich mit Forall verarbeitet. Aber manchmal müssen Sie möglicherweise einige Daten nur einmal mit einem temporären anonymen PLSQL-Block vorbereiten, und Sie möchten nicht zu viel Code schreiben, um diese Aufgabe auszuführen. Für diese Art von Szenarien können Sie Bulk-Sammlung auswählen in verwenden eine Option, um jede Aufgabe schnell auszuführen, ohne zu viel Zeit mit dem Schreiben von Code zu verschwenden.

Unten ist das Beispiel eines PLSQL-Blocks, der die Datensätze aus der EMP-Tabelle nimmt und die BONUS-Tabelle aktualisiert und auch auf dem Bildschirm ausgibt.

SET SEVEROUTPUT ON;
DECLARE
TYPE t_emp IS TABLE OF emp%ROWTYPE;

e_rec   t_emp;
BEGIN
SELECT *
BULK COLLECT INTO e_rec
FROM emp;

FORALL i IN e_rec.FIRST .. e_rec.LAST
update bonus set amount = e_rec(i).sal * 15 / 100
where empno = e_rec(i).empno;

Commit;

FOR i IN e_rec.FIRST .. e_rec.LAST
LOOP
DBMS_OUTPUT.
put_line (
'Bonus Updated For Employee: '
|| e_rec (i).ename
|| ' '
|| 'Bonus: '
|| e_rec(i).sal * 15 / 100);
END LOOP;
END;