Nel precedente post del blog, ho fornito un esempio per utilizzare Oracle Bulk Collect utilizzando l'oggetto tipo di riga del cursore. Che prima crea il cursore, quindi digita l'oggetto del tipo di cursore e quindi apre il cursore, recuperandoli in blocco e infine elaborandoli utilizzando Forall. Ma a volte potrebbe essere necessario preparare alcuni dati solo per una volta con un blocco PLSQL anonimo temporaneo e non si desidera scrivere troppo codice per eseguire tale attività. Per questo tipo di scenari, puoi utilizzare Seleziona raccolta in blocco in un'opzione per eseguire rapidamente qualsiasi attività senza perdere troppo tempo a scrivere codice.
Di seguito è riportato l'esempio del blocco PLSQL che prenderà i record dalla tabella EMP e aggiornerà la tabella BONUS e stamperà anche sullo schermo.
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;