In de vorige blogpost heb ik een voorbeeld gegeven om Oracle Bulk Collect te gebruiken met Cursor Rowtype Type Object. Die eerst de cursor maakt en vervolgens het object van het cursortype typt en vervolgens de cursor opent, in bulk verzamelt en ze vervolgens verwerkt met Forall. Maar soms kan het zijn dat u enkele gegevens voor slechts één keer moet voorbereiden met een tijdelijk anoniem PLSQL-blok, en u wilt niet te veel code schrijven om die taak uit te voeren. Voor dit soort scenario's kunt u Selecteer bulksgewijs verzamelen in . gebruiken een optie om elke taak snel uit te voeren zonder al te veel tijd te verspillen aan het schrijven van code.
Hieronder ziet u het voorbeeld van een PLSQL-blok dat de records uit de EMP-tabel haalt en de BONUS-tabel bijwerkt en ook op het scherm wordt afgedrukt.
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;