पिछले ब्लॉग पोस्ट में, मैंने Oracle बल्क कलेक्ट का उपयोग करने के लिए Cursor Rowtype Type Object का उपयोग करने के लिए एक उदाहरण दिया है। जो पहले कर्सर बनाता है फिर कर्सर टाइप की वस्तु टाइप करता है और फिर कर्सर को खोलता है, बल्क कलेक्ट में लाता है और अंत में उन्हें Forall का उपयोग करके प्रोसेस करता है। लेकिन कभी-कभी आपको अस्थायी अनाम PLSQL ब्लॉक के साथ केवल एक बार के लिए कुछ डेटा तैयार करने की आवश्यकता हो सकती है, और आप उस कार्य को करने के लिए बहुत अधिक कोड नहीं लिखना चाहते हैं। इस प्रकार के परिदृश्यों के लिए, आप बल्क कलेक्ट को इसमें चुनें . का उपयोग कर सकते हैं कोड लिखने के लिए बहुत अधिक समय बर्बाद किए बिना किसी भी कार्य को जल्दी से करने का विकल्प।
नीचे पीएलएसक्यूएल ब्लॉक का उदाहरण दिया गया है जो ईएमपी टेबल से रिकॉर्ड लेगा और बोनस टेबल को अपडेट करेगा और स्क्रीन पर प्रिंट भी करेगा।
SET SEVEROUTPUT ON; DECLARE TYPE t_emp IS TABLE OF emp%ROWTYPE; e_rec t_emp; BEGIN SELECT * BULK COLLECT INTO e_rec FROM emp; FORALL i IN e_rec.FIRST .. e_rec.LAST update bonus set amount = e_rec(i).sal * 15 / 100 where empno = e_rec(i).empno; Commit; FOR i IN e_rec.FIRST .. e_rec.LAST LOOP DBMS_OUTPUT. put_line ( 'Bonus Updated For Employee: ' || e_rec (i).ename || ' ' || 'Bonus: ' || e_rec(i).sal * 15 / 100); END LOOP; END;
