Na postagem anterior do blog, dei um exemplo para usar o Oracle Bulk Collect Using Cursor Rowtype Type Object. Que primeiro cria o cursor, em seguida, digite o objeto do tipo cursor e, em seguida, abra o cursor, buscando na coleta em massa e, finalmente, processando-os usando Forall. Mas às vezes você pode ser solicitado a preparar alguns dados apenas uma vez com um bloco PLSQL anônimo temporário e não deseja escrever muito código para executar essa tarefa. Para esse tipo de cenário, você pode usar Selecionar coleta em massa em uma opção para executar qualquer tarefa rapidamente sem perder muito tempo para escrever código.
Abaixo segue o exemplo do bloco PLSQL que irá pegar os registros da tabela EMP e atualizar a tabela BONUS e também imprimir na tela.
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;