I det tidigare blogginlägget har jag gett ett exempel på att använda Oracle Bulk Collect Using Cursor Rowtype Type Object. Som först skapar markören, skriv sedan objekt av markörtyp och öppnar sedan markören, hämtar till bulk collect och bearbetar dem sedan med Forall. Men ibland kan du behöva förbereda vissa data för bara en gång med ett tillfälligt anonymt PLSQL-block, och du vill inte skriva för mycket kod för att utföra den uppgiften. För den här typen av scenarier kan du använda Välj Massinsamling till ett alternativ för att utföra alla uppgifter snabbt utan att slösa för mycket tid på att skriva kod.
Nedan är exemplet på PLSQL-block som kommer att ta poster från EMP-tabellen och uppdatera BONUS-tabellen och även skriva ut 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;