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

Пример за групово събиране на Oracle с помощта на обект тип тип ред на курсора

В тази публикация давам пример за извършване на вмъкване в използването на Oracle Bulk Collect и командата FORALL. Създаде PL SQL функция, която ще взема данни от таблицата EMP с помощта на курсор, след което създава променлива тип масив от този тип ред на курсора и след това групово събира и вмъква в таблицата BONUS с помощта на FORALL.

По-долу е примерът:

CREATE OR REPLACE FUNCTION f_currowtype
RETURN BOOLEAN
IS
CURSOR c_emp
IS
SELECT empno,
ename,
job,
sal
FROM emp;

TYPE t_emp IS TABLE OF c_emp%ROWTYPE;

e_rec   t_emp;
BEGIN
OPEN c_emp;

FETCH c_emp
BULK COLLECT INTO e_rec;

CLOSE c_emp;

FORALL i IN e_rec.FIRST .. e_rec.LAST
insert into bonus (empno, amount)
values (e_rec(i).empno, e_rec(i).sal * 10 / 100);

DBMS_OUTPUT.put_line ('Rows inserted: ' || SQL%ROWCOUNT);

COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
RETURN FALSE;
END;

Можете да го изпълните, както следва:

SET SERVEROUTPUT ON;

BEGIN
IF f_currowtype
THEN
DBMS_OUTPUT.put_line ('Success');
ELSE
DBMS_OUTPUT.put_line ('Failed');
END IF;
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. Как да архивирате файл в PL/SQL?

  2. 7 начина да проверите вашата версия на Oracle

  3. Как да направя топ 1 в Oracle?

  4. Друга бяла книга за 12c Optimizer

  5. Възможно ли е да се запита колона, разделена със запетая, за конкретна стойност?