निम्नलिखित Oracle संग्रहीत कार्यविधि का एक उदाहरण है, जिसमें डेटा को संसाधित करने के लिए तालिका प्रकार संग्रह का उपयोग किया जाता है।
Oracle संग्रहित प्रक्रिया उदाहरण में तालिका प्रकार का उपयोग करके डेटा संसाधित करें
निम्न तालिकाएँ बनाएँ और अपने स्कीमा में परीक्षण करने के लिए डेटा डालें।
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;
संग्रहीत प्रक्रिया बनाएं
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;
PL/SQL ब्लॉक का उपयोग करके परीक्षण करें
BEGIN process_bonus; END;
संसाधित डेटा के लिए बोनस तालिका देखें
SELECT * FROM EMP_BONUS;
आउटपुट:
एम्पनो | BONUS_AMOUNT |
7369 | 40 |
7499 | 80पी> |
7521 | 62.5पी> |
यह भी देखें:
- संग्रहीत प्रक्रिया का उपयोग करके Oracle में CSV फ़ाइल आयात करें
- Oracle में संग्रहित प्रक्रिया से परिणाम लौटाएं