Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle में बल्क कलेक्ट के साथ प्रदर्शन बढ़ाएँ

एक ही फ़ेच ऑपरेशन में डेटा की कई पंक्तियों को पुनः प्राप्त करने के लिए बल्क कलेक्ट का उपयोग करें। एक ही फ़ेच में डेटा की एकाधिक पंक्तियाँ नेटवर्क राउंड-ट्रिप की संख्या को कम करती हैं और प्रदर्शन में सुधार करती हैं।
निम्नलिखित उदाहरण 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;

जहां hr.employees.employee_id =

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 प्रक्रिया सफलतापूर्वक पूरी हुई।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NHibernate के साथ एक ही ASP.NET ऐप में Oracle और SQL सर्वर दोनों का समर्थन करने के लिए सिफारिशें

  2. मुझे PLS-00302 क्यों मिलता है:घटक मौजूद होने पर घोषित किया जाना चाहिए?

  3. Oracle SQL डेवलपर का उपयोग करके CSV को तालिका कैसे निर्यात करें?

  4. Oracle डाटाबेस में NLS पैरामीटर्स की सूची

  5. ओपच प्रीरेक