sql >> Databáze >  >> RDS >> Oracle

Vyberte Hromadný sběr do příkladu Oracle

V předchozím příspěvku na blogu jsem uvedl příklad použití Oracle Bulk Collect pomocí objektu typu kurzorového řádku. Který nejprve vytvoří kurzor, poté napíše objekt typu kurzor a poté kurzor otevře, načte do hromadného sběru a nakonec je zpracuje pomocí Forall. Někdy se ale může stát, že budete muset připravit některá data pouze jednou pomocí dočasného anonymního bloku PLSQL a nechcete psát příliš mnoho kódu, abyste mohli tento úkol provést. Pro tento druh scénářů můžete použít Vybrat Hromadné shromažďování do možnost rychle provést jakýkoli úkol, aniž byste zbytečně ztráceli čas psaním kódu.

Níže je příklad bloku PLSQL, který převezme záznamy z EMP tabulky a aktualizuje tabulku BONUS a také se vytiskne na obrazovku.

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. Přiřaďte výsledek dynamického sql proměnné

  2. Podporuje integrace SQL Server CLR konfigurační soubory?

  3. docker postgres s počátečními daty není zachován přes potvrzení

  4. Jak mohu použít dotaz se zástupným symbolem uvnitř uvozovek? (perl / postgresql)