Oracle
 sql >> база данни >  >> RDS >> Oracle

Изберете групово събиране в пример на Oracle

В предишната публикация в блога дадох пример за използване на Oracle Bulk Collect, използвайки Cursor Rowtype Type Object. Което първо създава курсора, след това въвежда обект от тип курсор и след това отваря курсора, извличайки в групово събиране и след това накрая ги обработва с помощта на Forall. Но понякога може да се наложи да подготвите някои данни само за един път с временен анонимен PLSQL блок и не искате да пишете твърде много код, за да изпълните тази задача. За този вид сценарии можете да използвате Изберете групово събиране в опция за бързо изпълнение на всяка задача, без да губите твърде много време за писане на код.

По-долу е даден примерът на PLSQL блок, който ще вземе записите от таблицата EMP и ще актуализира таблицата BONUS и също така ще отпечата на екрана.

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. Oracle 10g приема 5-цифрена година в дата

  2. Търсенето без регистри и букви в Oracle

  3. Как да намеря зависимости в пакет оракул?

  4. Преобразувайте VARCHAR2 в число

  5. Състояние на риска при анализ на налягането в паметта