Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wybierz opcję Zbieranie zbiorcze do przykładu Oracle

W poprzednim wpisie na blogu podałem przykład użycia Oracle Bulk Collect using Cursor Rowtype Type Object. Który najpierw tworzy kursor, a następnie wpisuje obiekt typu kursora, a następnie otwiera kursor, pobiera do zbiorczego zbierania, a następnie przetwarza je za pomocą Forall. Ale czasami możesz być zmuszony do przygotowania niektórych danych tylko jeden raz za pomocą tymczasowego anonimowego bloku PLSQL i nie chcesz pisać zbyt dużo kodu, aby wykonać to zadanie. W przypadku tego rodzaju scenariuszy możesz użyć opcji Wybierz zbiorcze zbieranie do możliwość szybkiego wykonania dowolnego zadania bez marnowania zbyt wiele czasu na pisanie kodu.

Poniżej znajduje się przykład bloku PLSQL, który pobierze rekordy z tabeli EMP i zaktualizuje tabelę BONUS, a także wyświetli się na ekranie.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. uzyskać liczbę unikalnych wartości bez oddzielania wartości należących do tego samego bloku wartości

  2. zmień kolumnę upuszczania tabeli w bazie danych Oracle

  3. Zapytanie o dwie tabele z innego schematu

  4. GWFG w Oracle RAC

  5. Dlaczego klauzula Oracle IN ma limit 1000 tylko dla danych statycznych?