निम्नलिखित उदाहरण JOB_HISTORY तालिका में सूचीबद्ध कार्य का वर्णन करता है जो कर्मचारी के पास था, लेकिन वह कार्य भी जिसके बाद कर्मचारी गया था। JOB_HISTORY तालिका में सूचीबद्ध कार्य।
प्रक्रिया बनाएं या बदलें प्रचार_Rev
IS
old_job hr.job_history.job_id%TYPE;
new_job hr.job_history.job_id%TYPE;
nincr NUMBER;
कर्सर cselectjob
IS
कर्मचारी_आईडी चुनें,
start_date,
end_date,
job_id
hr.job_history
से कर्मचारी_आईडी, start_date;पी>
TYPE jh_rec IS RECORD (
Employee_id hr.job_history.employee_id%TYPE,
start_date hr.job_history.start_date%TYPE,
end_date hr.job_history.end_date%TYPE,
job_id hr .job_history.job_id%TYPE
);
TYPE jh_table is TABLE OF jh_rec
INDEX BY PLS_INTEGER;
jh_table_array jh_table;
BEGIN
cselectjob खोलें;
fETCH cselectjob
थोक संग्रह में jh_table_array;
cselectjob बंद करें;
काउंटर के लिए jh_table_array.FIRST .. jh_table_array.LAST
LOOP
IF काउंटर =jh_table_array.LAST
फिर
nincr :=0;
ELSE
nincr :=1;
END IF;
Old_job :=jh_table_array (काउंटर).job_id;
अगर jh_table_array (काउंटर).employee_id =
jh_table_array (काउंटर + nincr).employee_id
तब
new_job :=jh_table_array (काउंटर + nincr).job_id;
ELSE
hr.employees.employee_id =
jh_table_array (काउंटर).employee_id;
END IF;
DBMS_OUTPUT.put_line ('कर्मचारी' | (jh_table_array (काउंटर).end_date
- jh_table_array (काउंटर).स्टार्ट_डेट)
|| ' दिन और नौकरी पर चले गए '
|| new_job
|| '.');
END LOOP;
END;
/
निम्नलिखित प्रक्रिया निष्पादित करें:
सर्वरआउटपुट चालू करें;
BEGIN
प्रमोशन_रेव;
END;
/
आउटपुट कुछ इस तरह आना चाहिए:
कर्मचारी 101 के पास 1497 दिनों के लिए AC_ACCOUNT का कार्य था और वह AC_MGR में चला गया।
कर्मचारी 101 के पास 1234 दिनों के लिए AC_MGR की नौकरी थी और वह AD_VP में चला गया।
कर्मचारी 102 के पास 2018 दिनों के लिए IT_PROG नौकरी थी और वह AD_VP की नौकरी पर चला गया।
कर्मचारी 114 के पास 647 दिनों के लिए ST_CLERK था और वह PU_MAN की नौकरी पर चला गया।
कर्मचारी 122 के पास ST_CLERK की 364 दिनों के लिए नौकरी थी और वह ST_MAN की नौकरी पर चला गया।
कर्मचारी 176 के पास 282 दिनों के लिए SA_REP नौकरी थी और वह स्थानांतरित हो गया नौकरी के लिए SA_MAN।
कर्मचारी 176 के पास 364 दिनों के लिए SA_MAN की नौकरी थी और वह SA_REP नौकरी में चला गया।
कर्मचारी 200 के पास 2100 दिनों के लिए AD_ASST नौकरी थी और वह AC_ACCOUNT में चला गया।
कर्मचारी 200 के पास AC_ACCOUNT नौकरी थी 1644 दिन और नौकरी AD_ASST पर चले गए।
कर्मचारी 201 ने 1401 दिनों के लिए MK_REP की नौकरी की और MK_REP को नौकरी पर ले जाया गया।
PL/SQL प्रक्रिया सफलतापूर्वक पूरी हुई।
![](http://www.sqldat.com/article/uploadfiles/202205/2022051017105801.jpg)