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

Oracle डेटाबेस में लोअर और अपर बाउंड के साथ FORALL स्टेटमेंट

निचले और ऊपरी बाउंड क्लॉज के साथ फॉरल स्टेटमेंट

पिछले ट्यूटोरियल में हमने सीखा कि तीन बाउंड क्लॉज़ हैं जिनका उपयोग हम DML क्वेरीज़ को ऑप्टिमाइज़ करने के लिए FORALL स्टेटमेंट के साथ कर सकते हैं। उन तीन बाउंड क्लॉज़ से हम इस ट्यूटोरियल में पहले वाले यानी लोअर और अपर बाउंड को एक्सप्लोर करेंगे।

फोरल स्टेटमेंट का निचला और ऊपरी बाउंड क्लॉज क्या है?

जैसा कि नाम से पता चलता है, लोअर और अपर बाउंड क्लॉज के साथ हमें संग्रह के लगातार इंडेक्स नंबरों की वैध सीमा निर्दिष्ट करनी होगी।

क्या FORALL स्टेटमेंट के साथ लोअर और अपर बाउंड क्लॉज का उपयोग करने के लिए कोई नियम है?

लोअर और अपर बाउंड क्लॉज का उपयोग केवल तभी किया जा सकता है जब आप अपने डीएमएल स्टेटमेंट में जिस संग्रह का उल्लेख कर रहे हैं वह घना है . यदि संदर्भ संग्रह विरल है तो आप अन्य बाध्य खंडों का उपयोग करना चाह सकते हैं जिनकी चर्चा हम भविष्य के ट्यूटोरियल में करेंगे।

अपने कार्यक्रम को सफलतापूर्वक निष्पादित करने के लिए आपको यह सुनिश्चित करने की आवश्यकता है कि आपने लोअर और अपर बाउंड क्लॉज के उपर्युक्त नियम के साथ FORALL स्टेटमेंट के सभी नियमों का पालन किया है। यहां FORALL स्टेटमेंट के बारे में और जानें।

आइए Oracle डेटाबेस में लोअर और अपर बाउंड क्लॉज के साथ FORALL स्टेटमेंट का एक उदाहरण करते हैं।

लेकिन उदाहरण पर आगे बढ़ने से पहले हमें एक बात समझनी होगी; FORALL स्टेटमेंट बल्क कलेक्ट क्लॉज की तरह ही काम करता है लेकिन विपरीत तरीके से। उदाहरण के लिए, बल्क कलेक्ट के साथ हम टेबल से डेटा ला रहे थे और इसे कलेक्शन में स्टोर कर रहे थे, लेकिन अब FORALL स्टेटमेंट के साथ हम डेटा को कलेक्शन से लाएंगे और टेबल में स्टोर करेंगे।

इस प्रदर्शन में हम लोअर और अपर बाउंड क्लॉज के साथ FORALL स्टेटमेंट की अवधारणा को समझने के लिए तीन चीजें करेंगे। ये तीन चीजें हैं:

  1. तालिका बनाएं।

सबसे पहले हम एक टेबल बनाएंगे। हम इस तालिका का उपयोग उस डेटा को डंप करने के लिए करेंगे जो हम संग्रह से प्राप्त करेंगे।

  1. संग्रह बनाएं और पॉप्युलेट करें।

यदि आपके पास पहले से ही कुछ डेटा के साथ संग्रह है तो यह चरण वैकल्पिक है। यदि आप नहीं करते हैं तो मेरे साथ चलें। प्रदर्शन के लिए मैं एक संग्रह बनाऊंगा और उसे भर दूंगा।

  1. फोरल स्टेटमेंट लिखें।

एक बार जब आपकी टेबल और संग्रह तैयार हो जाए तो 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 स्टेटमेंट पर ट्यूटोरियल है। आशा है आपको देखने में मज़ा आया होगा। कृपया इस ब्लॉग को अपने सोशल मीडिया पर अपने दोस्तों के साथ लाइक और शेयर करना न भूलें। आप मुझसे मेरे फेसबुक पेज पर भी संपर्क कर सकते हैं।

धन्यवाद और आपका दिन मंगलमय हो।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या ओरेकल में, दो पंक्तियों का उपयोग करके, एक पंक्ति में एकाधिक पंक्ति पंक्तियों में शामिल होने का कोई तरीका है, जहां अंतिम मान अल्पविराम से अलग होते हैं?

  2. ट्रिगर के अंदर अपवाद कैसे बढ़ाएं? क्या इसे करने का कोई तरीका है?

  3. Oracle में NULLIF () फ़ंक्शन

  4. Oracle डेटाबेस में डे लाइट सेविंग को कैसे हैंडल करें

  5. SQL सर्वर संग्रहीत प्रक्रिया/कार्य में इनपुट-आउटपुट पैरामीटर कैसे घोषित करें?