sql >> Databasteknik >  >> RDS >> Oracle

Välj Bulk Collect into Oracle Exempel

I det tidigare blogginlägget har jag gett ett exempel på att använda Oracle Bulk Collect Using Cursor Rowtype Type Object. Som först skapar markören, skriv sedan objekt av markörtyp och öppnar sedan markören, hämtar till bulk collect och bearbetar dem sedan med Forall. Men ibland kan du behöva förbereda vissa data för bara en gång med ett tillfälligt anonymt PLSQL-block, och du vill inte skriva för mycket kod för att utföra den uppgiften. För den här typen av scenarier kan du använda Välj Massinsamling till ett alternativ för att utföra alla uppgifter snabbt utan att slösa för mycket tid på att skriva kod.

Nedan är exemplet på PLSQL-block som kommer att ta poster från EMP-tabellen och uppdatera BONUS-tabellen och även skriva ut 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. Oracle sql handledning:Begränsning av datamängden

  2. Fel:ORA-01704:strängen är för lång

  3. Hur man gör en fråga med group_concat i sql-server

  4. Varför rundas casting från float till varchar i SQL Server?