Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Selecione Coleta em Massa no Exemplo Oracle


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;