I det forrige blogindlæg har jeg givet et eksempel på at bruge Oracle Bulk Collect Using Cursor Rowtype Type Object. Som først opretter markøren, skriv derefter objekt af markørtype og åbner derefter markøren, henter til bulk collect og behandler dem til sidst ved hjælp af Forall. Men nogle gange kan du blive bedt om at forberede nogle data for kun én gang med en midlertidig anonym PLSQL-blok, og du ønsker ikke at skrive for meget kode for at udføre denne opgave. Til denne slags scenarier kan du bruge Vælg Masseindsamling til en mulighed for at udføre enhver opgave hurtigt uden at spilde for meget tid på at skrive kode.
Nedenfor er eksemplet på PLSQL-blok, som vil tage posterne fra EMP-tabellen og opdatere BONUS-tabellen og også udskrive på skærmen.
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;