sql >> Database teknologi >  >> RDS >> Oracle

Vælg Bulk Collect into Oracle Eksempel

I det forrige blogindlæg har jeg givet et eksempel på at bruge Oracle Bulk Collect Using Cursor Rowtype Type Object. Som først opretter markøren, skriv derefter objekt af markørtype og åbner derefter markøren, henter til bulk collect og behandler dem til sidst ved hjælp af Forall. Men nogle gange kan du blive bedt om at forberede nogle data for kun én gang med en midlertidig anonym PLSQL-blok, og du ønsker ikke at skrive for meget kode for at udføre denne opgave. Til denne slags scenarier kan du bruge Vælg Masseindsamling til en mulighed for at udføre enhver opgave hurtigt uden at spilde for meget tid på at skrive kode.

Nedenfor er eksemplet på PLSQL-blok, som vil tage posterne fra EMP-tabellen og opdatere BONUS-tabellen og også udskrive 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;

  1. Laravel 5.2 - Brug en streng som en tilpasset primær nøgle til veltalende tabel bliver 0

  2. Konfiguration af AlwaysOn Availability Groups på SQL Server

  3. Best Practices for PostgreSQL-replikering - del 2

  4. Linux filsystemer og PostgreSQL kontrolpunkt benchmarks