उदाहरण के साथ Oracle PL / SQL LOOP

विषय - सूची:

Anonim

लूप्स क्या हैं?

लूप किसी प्रोग्राम में कोड के एक निश्चित भाग को वांछित संख्या के लिए निष्पादित करने की अनुमति देता है।

इस ट्यूटोरियल में, हम PL / SQL में लूप कॉन्सेप्ट और लूप्स में कंट्रोल ऑफ फ्लो देखने जा रहे हैं। आप सिख जाओगे-

  • लूप्स कॉन्सेप्ट का परिचय
  • लूप नियंत्रण विवरण
  • PL / SQL में लूप के प्रकार
  • बेसिक लूप स्टेटमेंट
  • लूप्स की लेबलिंग

लूप्स कॉन्सेप्ट का परिचय

लूप्स अवधारणा कोडिंग में निम्नलिखित लाभ प्रदान करती है।

  • कोड की पुन: प्रयोज्यता
  • कोड आकार में कमी
  • नियंत्रण का आसान प्रवाह
  • कम हुई जटिलता

नीचे दिए गए चित्र में लूपिंग अवधारणा को चित्रमय तरीके से दिखाया गया है

उपरोक्त आरेख में, लूप की स्थिति की जांच की जाएगी, और जब तक लूप की स्थिति संतुष्ट होती है, तब तक निष्पादन ब्लॉक निष्पादित किया जाएगा।

प्रत्येक पुनरावृत्ति में, लूप काउंटर चर जो वास्तव में लूप की स्थिति को तय करता है, को लूप से नियंत्रण से बाहर निकलने के लिए संशोधित करना चाहिए। कुछ मामलों में, यह लूप काउंटर चर पूर्वनिर्धारित गिनती के लिए वेतन वृद्धि / कमी संचालक है, और कुछ मामलों में, यह एक खोज की स्थिति है जो इसे संतुष्ट होने तक ब्लॉक निष्पादित करता रहता है।

लूप नियंत्रण विवरण

लूप कॉन्सेप्ट सीखने से पहले लूप कंट्रोल स्टेटमेंट सीखना अनिवार्य है। लूप नियंत्रण कथन वे हैं जो वास्तव में लूप के अंदर निष्पादन के प्रवाह को नियंत्रित करते हैं। नीचे लूप नियंत्रण कथनों के बारे में विस्तृत विवरण दिया गया है।

जारी रखें

यह कीवर्ड पीएल / एसक्यूएल इंजन को एक निर्देश भेजता है कि जब भी पीएल / एसक्यूएल इंजन लूप के अंदर इस कीवर्ड का सामना करता है, तो यह कोड के निष्पादन ब्लॉक में शेष कोड को छोड़ देगा, और अगला पुनरावृत्ति तुरंत शुरू हो जाएगा। यह मुख्य रूप से उपयोग किया जाएगा यदि लूप के अंदर कोड कुछ चलना मूल्यों के लिए छोड़ दिया जाना चाहता है।

बाहर निकलें / बाहर निकलें

यह कीवर्ड पीएल / एसक्यूएल इंजन को एक निर्देश भेजता है कि जब भी पीएल / एसक्यूएल इंजन इस कीवर्ड का सामना करता है, तो यह तुरंत वर्तमान लूप से बाहर निकल जाएगा। यदि PL / SQL इंजन EXIT का नेस्टेड लूप में सामना करता है, तो यह उस लूप से बाहर आएगा जिसमें इसे परिभाषित किया गया है, अर्थात नेस्टेड लूप में, आंतरिक लूप में EXIT देने से केवल आंतरिक लूप से नियंत्रण बाहर निकल जाएगा लेकिन बाहरी पाश से नहीं। Is EXIT WHEN ’के बाद एक अभिव्यक्ति है जो बूलियन परिणाम देती है। यदि परिणाम TRUE है, तो नियंत्रण EXIT होगा।

के लिए जाओ

यह कथन नियंत्रण को लेबल किए गए कथन ("GOTO <लेबल>;") में स्थानांतरित करेगा। इसके निम्नलिखित प्रतिबंध हैं

  • नियंत्रण हस्तांतरण केवल उपप्रोग्राम के भीतर ही किया जा सकता है।
  • नियंत्रण हस्तांतरण को अपवाद वाले हिस्से से निष्पादन वाले हिस्से तक नहीं किया जा सकता है

इस कथन का उपयोग तब तक करने की अनुशंसा नहीं की जाती है जब तक कि कोई अन्य विकल्प न हो, क्योंकि एक भाग से दूसरे भाग में नियंत्रण स्थानांतरित होने के कारण प्रोग्राम में कोड-कंट्रोल ट्रेसबिलिटी बहुत मुश्किल होगी।

PL / SQL में लूप के प्रकार

PL / SQL तीन प्रकार के लूप प्रदान करता है

  • बेसिक लूप स्टेटमेंट
  • लूप स्टेटमेंट के लिए
  • जबकि लूप स्टेटमेंट

बेसिक लूप स्टेटमेंट

यह लूप स्टेटमेंट PL / SQL में सबसे सरल लूप संरचना है। निष्पादन ब्लॉक कीवर्ड 'LOOP' से शुरू होता है और कीवर्ड 'END LOOP' के साथ समाप्त होता है।

इस निष्पादन ब्लॉक के अंदर निकास की स्थिति दी जानी चाहिए ताकि लूप से बाहर निकलने पर नियंत्रण हो सके।

लूप से बाहर निकलने के लिए एक्ज़िट कीवर्ड को एक्ज़िट पार्ट में स्पष्ट रूप से दिया जाना चाहिए।

LOOPEND LOOP;
सिंटैक्स स्पष्टीकरण:
  • उपरोक्त वाक्य रचना में, कुंजी शब्द 'LOOP' लूप की शुरुआत को चिह्नित करता है और 'END LOOP' लूप के अंत को चिह्नित करता है।
  • निष्पादन ब्लॉक में सभी कोड शामिल हैं जिन्हें EXIT स्थिति सहित निष्पादित करने की आवश्यकता है।
  • निष्पादन भाग में कोई भी निष्पादन विवरण हो सकता है।

नोट: बिना किसी EXIT कीवर्ड के बेसिक लूप स्टेटमेंट एक INFINITE-LOOP होगा जो कभी बंद नहीं होगा।

उदाहरण 1 : इस उदाहरण में, हम बुनियादी लूप स्टेटमेंट का उपयोग करके नंबर 1 से 5 तक प्रिंट करने जा रहे हैं। उसके लिए, हम निम्नलिखित कोड निष्पादित करेंगे।

DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/

कोड स्पष्टीकरण:

  • कोड लाइन 2 : चर 'a' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '1' मान के साथ प्रारंभ करना।
  • कोड लाइन 4 : "प्रोग्राम शुरू हुआ" कथन को प्रिंट करना।
  • कोड लाइन 5: कीवर्ड 'LOOP' लूप की शुरुआत को चिह्नित करता है।
  • कोड लाइन 6: 'a' का मूल्य प्रिंट करता है।
  • कोड लाइन 7: +1 द्वारा 'a' का मान बढ़ाता है।
  • कोड लाइन 8: जाँचता है कि 'a' का मान 5 से अधिक है या नहीं।
  • कोड लाइन 9: कीवर्ड 'END LOOP' निष्पादन ब्लॉक के अंत को चिह्नित करता है।
  • लाइन 6 से लाइन 8 तक का कोड तब तक निष्पादित होता रहेगा जब तक कि 'a' वैल्यू 6 तक नहीं पहुंच जाता, क्योंकि स्थिति TRUE वापस आ जाएगी, और नियंत्रण लूप से बाहर हो जाएगा।
  • कोड लाइन 10: "प्रोग्राम पूरा हुआ" स्टेटमेंट को प्रिंट करना

लूप्स की लेबलिंग

पीएल / एसक्यूएल में, छोरों को लेबल किया जा सकता है। लेबल को "<<" और ">>" के बीच संलग्न किया जाना चाहिए। विशेष रूप से नेस्टेड लूप कोड में लूप की लेबलिंग अधिक पठनीयता देगी। लेबल उस विशिष्ट लूप से बाहर निकलने के लिए EXIT कमांड में दिया जा सकता है। लेबल का उपयोग करके, नियंत्रण को बाहरी छोर लेबल द्वारा पीछा निकास कमांड देकर, छोरों के अंदर कहीं से नेस्टेड छोरों के बाहरी लूप से बाहर निकलने के लिए बनाया जा सकता है।

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
सिंटैक्स स्पष्टीकरण:
  • उपरोक्त सिंटैक्स में, आउट लूप के अंदर एक और लूप होता है।
  • '<< OUTER_LOOP >>' और '<< INNER_LOOP >>' इन छोरों के लेबल हैं।

उदाहरण 1 : इस उदाहरण में, हम बेसिक लूप स्टेटमेंट का उपयोग करके 1 से शुरू होने वाले नंबर को प्रिंट करने जा रहे हैं। प्रत्येक संख्या को उसके मूल्य के रूप में कई बार मुद्रित किया जाएगा। श्रृंखला की ऊपरी सीमा कार्यक्रम घोषणा भाग में तय की गई है। आइए जानें कि हम इसे प्राप्त करने के लिए लेबल अवधारणा का उपयोग कैसे कर सकते हैं। उसके लिए, हम निम्नलिखित कोड निष्पादित करेंगे

DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop»‭ ‬LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/

कोड स्पष्टीकरण:

  • कोड लाइन 2-3 : चर 'a' और 'b' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना।
  • कोड पंक्ति 4 : चर 'ऊपरी' को 'संख्या' मान के साथ 'ऊपरी' डेटा प्रकार घोषित करना
  • कोड लाइन 6 : "प्रोग्राम शुरू हुआ" कथन को प्रिंट करना।
  • कोड लाइन 7: बाहरी लूप को "external_loop" के रूप में लेबल किया गया है
  • कोड लाइन 9: 'a' का मान 1 से बढ़ा हुआ है।
  • कोड लाइन 11: इनर लूप को "inner_loop" के रूप में लेबल किया गया है।
  • कोड लाइन 13: EXIT शर्त जो यह जांचती है कि क्या 'a' 'ऊपरी_अभिमत' मूल्य से अधिक है। यदि नहीं तो यह और आगे बढ़ेगा, अन्यथा यह सीधे बाहरी लूप से बाहर निकलता है।
  • कोड लाइन 14: 'b' के मान को प्रिंट करना।
  • कोड लाइन 15: +1 द्वारा 'b' का मान बढ़ाता है।
  • कोड लाइन 16: EXIT शर्त जो यह जांचती है कि 'b' का मान 'a' से अधिक है या नहीं। यदि ऐसा है, तो यह आंतरिक लूप से नियंत्रण से बाहर निकल जाएगा।
  • कोड लाइन 14: "प्रोग्राम पूरा हुआ" स्टेटमेंट को प्रिंट करना

सारांश

लूप मूल पाश
EXIT मानदंड निष्पादन भाग में कीवर्ड 'बाहर निकलें' का सामना करने पर बाहर निकलें
प्रयोग जब निकास किसी विशेष स्थिति पर आधारित नहीं है, तो उपयोग करने के लिए अच्छा है।