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

Typ tabeli w przykładzie procedury składowanej Oracle

Poniżej znajduje się przykład procedury składowanej Oracle, w której do przetwarzania danych używana jest kolekcja typów tabeli.

Przetwarzaj dane przy użyciu typu tabeli w przykładzie procedury składowanej Oracle

Utwórz poniższe tabele i wstaw dane do przetestowania w swoim schemacie.

CREATE TABLE EMP
(
EMPNO NUMBER(4),
ENAME VARCHAR2(10 BYTE),
JOB VARCHAR2(9 BYTE),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
)
/
CREATE TABLE EMP_BONUS
(
EMPNO NUMBER(4),
BONUS_AMOUNT NUMBER
)
/
SET DEFINE OFF;
Insert into EMP
(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)
Values
(7369, 'SMITH', 'CLERK', 7902, 
TO_DATE('12/17/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 800, 20);
Insert into EMP
(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
Values
(7499, 'ALLEN', 'SALESMAN', 7698, 
TO_DATE('02/20/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1600, 300, 30);
Insert into EMP
(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
Values
(7521, 'WARD', 'SALESMAN', 7698, 
TO_DATE('02/22/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1250, 500, 30);
COMMIT;

Utwórz zapisaną procedurę

CREATE OR REPLACE PROCEDURE process_bonus
IS
CURSOR c_emp
IS
SELECT EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
FROM emp;

/* declare table type in the procedure declare section as below */
TYPE t_emp_table IS TABLE OF emp%ROWTYPE
INDEX BY BINARY_INTEGER;

t_emp t_emp_table;
BEGIN
OPEN c_emp;

/* fetch cursor data into table type using bulk collect */
FETCH c_emp
BULK COLLECT INTO t_emp;

CLOSE c_emp;

FOR i IN t_emp.FIRST .. t_emp.LAST
LOOP
/* insert 5% bonus of employee's salary into emp_bonus table */
INSERT INTO emp_bonus (empno, bonus_amount)
VALUES (t_emp (i).empno, t_emp (i).sal * 5 / 100);
END LOOP;

COMMIT;
END;

Test przy użyciu bloku PL/SQL

BEGIN
process_bonus;
END;

Sprawdź tabelę premii dla przetworzonych danych

SELECT * FROM EMP_BONUS;

Wyjście:

PRACA

BONUS_AMOUNT

7369

40

7499

80

7521

62,5

Zobacz też:

  • Importuj plik CSV do Oracle za pomocą procedury przechowywanej
  • Zwróć zestaw wyników z procedury przechowywanej w Oracle
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HQL ma wartość null And !=null w kolumnie Oracle

  2. Parametry połączenia Oracle bez pliku tnsnames.ora

  3. Bieżąca suma według grupowego SQL (Oracle)

  4. Wykrywanie cykli z rekurencyjnym faktoringiem podzapytań

  5. WSJDBCConnection nie zawija obiektów typu Oracle jdbc Connection