Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Jenis Tabel dalam Contoh Prosedur Tersimpan Oracle

Berikut ini adalah contoh dari prosedur tersimpan Oracle, di mana kumpulan tipe tabel digunakan untuk memproses data.

Proses Data Menggunakan Jenis Tabel di Oracle Stored Procedure Contoh

Buat tabel berikut dan masukkan data untuk diuji dalam skema Anda.

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;

Buat Prosedur Tersimpan

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;

Uji Menggunakan Blok PL/SQL

BEGIN
process_bonus;
END;

Periksa Tabel Bonus untuk Data yang Diproses

SELECT * FROM EMP_BONUS;

Keluaran:

EMPNO

BONUS_AMOUNT

7369

40

7499

80

7521

62,5

Lihat juga:

  • Impor File CSV di Oracle menggunakan Stored Procedure
  • Mengembalikan ResultSet dari Stored Procedure di 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. Kursor Oracle untuk penugasan

  2. Menghapus baris dari tabel induk dan anak

  3. Bagaimana saya bisa mematikan semua sesi yang terhubung ke database Oracle saya?

  4. Pengembang SQL 4.1.2

  5. cara menggunakan dbms_scheduler untuk menjalankan pekerjaan setiap 30 menit