निचले और ऊपरी बाउंड क्लॉज के साथ फॉरल स्टेटमेंट
पिछले ट्यूटोरियल में हमने सीखा कि तीन बाउंड क्लॉज़ हैं जिनका उपयोग हम DML क्वेरीज़ को ऑप्टिमाइज़ करने के लिए FORALL स्टेटमेंट के साथ कर सकते हैं। उन तीन बाउंड क्लॉज़ से हम इस ट्यूटोरियल में पहले वाले यानी लोअर और अपर बाउंड को एक्सप्लोर करेंगे।
फोरल स्टेटमेंट का निचला और ऊपरी बाउंड क्लॉज क्या है?
जैसा कि नाम से पता चलता है, लोअर और अपर बाउंड क्लॉज के साथ हमें संग्रह के लगातार इंडेक्स नंबरों की वैध सीमा निर्दिष्ट करनी होगी।
क्या FORALL स्टेटमेंट के साथ लोअर और अपर बाउंड क्लॉज का उपयोग करने के लिए कोई नियम है?
लोअर और अपर बाउंड क्लॉज का उपयोग केवल तभी किया जा सकता है जब आप अपने डीएमएल स्टेटमेंट में जिस संग्रह का उल्लेख कर रहे हैं वह घना है . यदि संदर्भ संग्रह विरल है तो आप अन्य बाध्य खंडों का उपयोग करना चाह सकते हैं जिनकी चर्चा हम भविष्य के ट्यूटोरियल में करेंगे।
अपने कार्यक्रम को सफलतापूर्वक निष्पादित करने के लिए आपको यह सुनिश्चित करने की आवश्यकता है कि आपने लोअर और अपर बाउंड क्लॉज के उपर्युक्त नियम के साथ FORALL स्टेटमेंट के सभी नियमों का पालन किया है। यहां FORALL स्टेटमेंट के बारे में और जानें।
आइए Oracle डेटाबेस में लोअर और अपर बाउंड क्लॉज के साथ FORALL स्टेटमेंट का एक उदाहरण करते हैं।
लेकिन उदाहरण पर आगे बढ़ने से पहले हमें एक बात समझनी होगी; FORALL स्टेटमेंट बल्क कलेक्ट क्लॉज की तरह ही काम करता है लेकिन विपरीत तरीके से। उदाहरण के लिए, बल्क कलेक्ट के साथ हम टेबल से डेटा ला रहे थे और इसे कलेक्शन में स्टोर कर रहे थे, लेकिन अब FORALL स्टेटमेंट के साथ हम डेटा को कलेक्शन से लाएंगे और टेबल में स्टोर करेंगे।
इस प्रदर्शन में हम लोअर और अपर बाउंड क्लॉज के साथ FORALL स्टेटमेंट की अवधारणा को समझने के लिए तीन चीजें करेंगे। ये तीन चीजें हैं:
-
तालिका बनाएं।
सबसे पहले हम एक टेबल बनाएंगे। हम इस तालिका का उपयोग उस डेटा को डंप करने के लिए करेंगे जो हम संग्रह से प्राप्त करेंगे।
-
संग्रह बनाएं और पॉप्युलेट करें।
यदि आपके पास पहले से ही कुछ डेटा के साथ संग्रह है तो यह चरण वैकल्पिक है। यदि आप नहीं करते हैं तो मेरे साथ चलें। प्रदर्शन के लिए मैं एक संग्रह बनाऊंगा और उसे भर दूंगा।
-
फोरल स्टेटमेंट लिखें।
एक बार जब आपकी टेबल और संग्रह तैयार हो जाए तो FORALL स्टेटमेंट लिखें। प्रदर्शन के लिए मैं एक FORALL स्टेटमेंट लिखूंगा जो डेटा को संग्रह से लाएगा और इसे तालिका में संग्रहीत करेगा। यह INSERT DML के साथ FORALL स्टेटमेंट का प्रदर्शन भी होगा।
आइए लोअर और अपर बाउंड के साथ PL/SQL FORALL स्टेटमेंट का उदाहरण लें।
SET SERVEROUTPUT ON; CREATE TABLE tut_77 ( Mul_tab NUMBER(5) );
वह हमारी तालिका होगी जो डेटा रखेगी। आगे हम PL/SQL ब्लॉक लिखेंगे।
DECLARE -- Declare the collection TYPE My_Array IS TABLE OF NUMBER INDEX BY PLS_INTEGER; col_var My_Array; --Declare a variable for holding the total number of records of the table tot_rec NUMBER; BEGIN --Populate the collection FOR i IN 1..10 LOOP col_var (i) := 9*i; END LOOP; -- Write the FORALL statement. FORALL idx IN 1..10 INSERT INTO tut_77 (mul_tab) VALUES (col_var (idx)); --Get the total number of records from the table SELECT count (*) INTO tot_rec FROM tut_77; DBMS_OUTPUT.PUT_LINE ('Total records inserted are '||tot_rec); END; /
घोषणा अनुभाग की व्याख्या
घोषणा अनुभाग . में इस कोड में से हमने "my_Array" नाम के साथ इसके संग्रह चर के साथ एक सहयोगी सरणी घोषित की है। संख्या डेटाटाइप के tot_rec नाम के साथ एक अतिरिक्त चर भी। यह चर हमारी तालिका में संग्रहीत रिकॉर्ड की कुल संख्या को बनाए रखेगा।
निष्पादन खंड में हमने तीन कार्य किए हैं। सबसे पहले, फॉर लूप का उपयोग करके हमने अपने संग्रह को 9 की गुणन तालिका के साथ भर दिया। दूसरे, FORALL स्टेटमेंट का उपयोग करके हमने संग्रह से डेटा लिया और इसे हमारे द्वारा बनाई गई तालिका में संग्रहीत किया। तीसरा, SELECT-INTO स्टेटमेंट के साथ वेरिएबल tot_rec का उपयोग करके हमने टेबल में स्टोर की गई पंक्तियों की कुल संख्या को वापस प्रदर्शित किया।
मैंने इसी विषय पर एक वीडियो भी किया है जहां मैंने इस उपरोक्त कोड लाइन-बाय-लाइन को विस्तार से समझाया है। मेरा सुझाव है कि आप इसे जांचें।
यह Oracle डेटाबेस में लोअर और अपर बाउंड क्लॉज के साथ PL/SQL FORALL स्टेटमेंट पर ट्यूटोरियल है। आशा है आपको देखने में मज़ा आया होगा। कृपया इस ब्लॉग को अपने सोशल मीडिया पर अपने दोस्तों के साथ लाइक और शेयर करना न भूलें। आप मुझसे मेरे फेसबुक पेज पर भी संपर्क कर सकते हैं।
धन्यवाद और आपका दिन मंगलमय हो।