sql >> Database >  >> RDS >> Oracle

Selecteer Bulk Collect in Oracle-voorbeeld

In de vorige blogpost heb ik een voorbeeld gegeven om Oracle Bulk Collect te gebruiken met Cursor Rowtype Type Object. Die eerst de cursor maakt en vervolgens het object van het cursortype typt en vervolgens de cursor opent, in bulk verzamelt en ze vervolgens verwerkt met Forall. Maar soms kan het zijn dat u enkele gegevens voor slechts één keer moet voorbereiden met een tijdelijk anoniem PLSQL-blok, en u wilt niet te veel code schrijven om die taak uit te voeren. Voor dit soort scenario's kunt u Selecteer bulksgewijs verzamelen in . gebruiken een optie om elke taak snel uit te voeren zonder al te veel tijd te verspillen aan het schrijven van code.

Hieronder ziet u het voorbeeld van een PLSQL-blok dat de records uit de EMP-tabel haalt en de BONUS-tabel bijwerkt en ook op het scherm wordt afgedrukt.

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;

  1. T-SQL dynamische SQL- en tijdelijke tabellen

  2. UTL_FILE.FOPEN() procedure accepteert pad voor directory niet?

  3. DISTINCT tellen over meerdere kolommen

  4. SQL Server-equivalent van de functie WM_CONCAT