Oracle उदाहरण के साथ PL/SQL लूप
लूप्स क्या हैं?
लूप्स किसी प्रोग्राम में कोड के एक निश्चित भाग को वांछित संख्या में निष्पादित करने की अनुमति देता है।
इस ट्यूटोरियल में, हम PL/SQL में लूप अवधारणा और लूप में नियंत्रण प्रवाह को देखेंगे।
लूप्स अवधारणा का परिचय
लूप्स अवधारणा कोडिंग में निम्नलिखित लाभ प्रदान करती है।
- कोड की पुनः प्रयोज्यता
- कोड का आकार छोटा किया गया
- नियंत्रण का आसान प्रवाह
- कम जटिलता
नीचे दिया गया चित्र लूपिंग अवधारणा को चित्रात्मक तरीके से दर्शाता है
उपरोक्त आरेख में, लूप स्थिति की जाँच की जाएगी, और जब तक लूप स्थिति संतुष्ट होती है, निष्पादन ब्लॉक निष्पादित किया जाएगा।
प्रत्येक पुनरावृत्ति में, लूप काउंटर वैरिएबल जो वास्तव में लूप की स्थिति तय करता है, उसे नियंत्रण को लूप से बाहर निकालने के लिए संशोधित करना चाहिए। कुछ मामलों में, यह लूप काउंटर वैरिएबल एक पूर्वनिर्धारित गणना के लिए वृद्धि/कमी ऑपरेटर है, और कुछ मामलों में, यह एक खोज स्थिति है जो ब्लॉक को तब तक निष्पादित करती रहती है जब तक कि यह इसे संतुष्ट नहीं कर देती।
लूप नियंत्रण विवरण
लूप्स की अवधारणा सीखने से पहले, लूप कंट्रोल स्टेटमेंट्स को सीखना अनिवार्य है। लूप कंट्रोल स्टेटमेंट्स वे होते हैं जो वास्तव में लूप के अंदर निष्पादन के प्रवाह को नियंत्रित करते हैं। नीचे लूप कंट्रोल स्टेटमेंट्स के बारे में विस्तृत विवरण दिया गया है।
बनी रहेंगी
यह कीवर्ड PL/SQL इंजन को निर्देश भेजता है कि जब भी PL/SQL इंजन लूप के अंदर इस कीवर्ड का सामना करेगा, तो वह कोड के निष्पादन ब्लॉक में शेष कोड को छोड़ देगा, और अगला पुनरावृत्ति तुरंत शुरू हो जाएगा। इसका उपयोग मुख्य रूप से तब किया जाएगा जब लूप के अंदर का कोड कुछ पुनरावृत्ति मानों के लिए छोड़ना चाहता है।
बाहर निकलें / बाहर निकलें जब
यह कीवर्ड PL/SQL इंजन को निर्देश भेजता है कि जब भी PL/SQL इंजन इस कीवर्ड का सामना करेगा, तो वह तुरंत वर्तमान लूप से बाहर निकल जाएगा। यदि PL/SQL इंजन नेस्टेड लूप में EXIT का सामना करता है, तो वह उस लूप से बाहर आ जाएगा जिसमें इसे परिभाषित किया गया है, यानी नेस्टेड लूप में, आंतरिक लूप में EXIT देने से केवल आंतरिक लूप से नियंत्रण बाहर निकलेगा, लेकिन बाहरी लूप से नहीं। 'EXIT WHEN' के बाद एक अभिव्यक्ति है जो बूलियन परिणाम देता है। यदि परिणाम सत्य है, तो नियंत्रण EXIT हो जाएगा।
गोटो
यह कथन नियंत्रण को लेबल वाले कथन (“GOTO ;”) में स्थानांतरित कर देगा। इसमें निम्नलिखित प्रतिबंध हैं
- नियंत्रण का हस्तांतरण केवल उपकार्यक्रमों के भीतर ही किया जा सकता है।
- नियंत्रण का स्थानांतरण अपवाद हैंडलिंग भाग से निष्पादन भाग में नहीं किया जा सकता
इस कथन का उपयोग तब तक अनुशंसित नहीं है जब तक कि कोई अन्य विकल्प न हो, क्योंकि एक भाग से दूसरे भाग में नियंत्रण के हस्तांतरण के कारण कार्यक्रम में कोड-नियंत्रण ट्रेसबिलिटी बहुत कठिन होगी।
PL/SQL में लूप के प्रकार
PL / SQL निम्नलिखित तीन प्रकार के लूप प्रदान करता है
- मूल लूप कथन
- फॉर लूप स्टेटमेंट
- While लूप कथन
बेसिक लूप स्टेटमेंट
यह लूप स्टेटमेंट PL/SQL में सबसे सरल लूप संरचना है। निष्पादन ब्लॉक कीवर्ड 'LOOP' से शुरू होता है और कीवर्ड 'END LOOP' के साथ समाप्त होता है।
निकास की स्थिति इस निष्पादन ब्लॉक के अंदर दी जानी चाहिए ताकि नियंत्रण लूप से बाहर निकल सके।
लूप से बाहर निकलने के लिए निष्पादन भाग में EXIT कीवर्ड को स्पष्ट रूप से दिया जाना आवश्यक है।
LOOP <execution block starts> <EXIT condition based on developer criteria> <execution_block_ends> END LOOP;
वाक्यविन्यास स्पष्टीकरण:
- उपरोक्त वाक्यविन्यास में, कुंजी शब्द 'LOOP' लूप की शुरुआत को दर्शाता है और 'END LOOP' लूप के अंत को दर्शाता है।
- निष्पादन ब्लॉक में EXIT शर्त सहित वह समस्त कोड शामिल होता है जिसे निष्पादित किया जाना आवश्यक होता है।
- निष्पादन भाग में कोई भी निष्पादन कथन शामिल हो सकता है।
नोट: बिना EXIT कीवर्ड वाला बेसिक लूप स्टेटमेंट एक अनंत लूप होगा जो कभी नहीं रुकेगा।
उदाहरण 1इस उदाहरण में, हम बेसिक लूप स्टेटमेंट का उपयोग करके 1 से 5 तक की संख्या प्रिंट करने जा रहे हैं। इसके लिए, हम निम्नलिखित कोड निष्पादित करेंगे।
DECLARE a NUMBER:=1; BEGIN dbms_output.put_line('Program started.'); LOOP dbms_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: 'a' के मान को +1 से बढ़ाता है.
- कोड पंक्ति 8: जाँचता है कि 'a' का मान 5 से अधिक है या नहीं।
- कोड पंक्ति 9: कीवर्ड 'END LOOP' निष्पादन ब्लॉक के अंत को चिह्नित करता है।
- पंक्ति 6 से पंक्ति 8 तक कोड तब तक निष्पादित होता रहेगा जब तक 'a' मान 6 तक नहीं पहुंच जाता, क्योंकि स्थिति TRUE लौटाएगी, और नियंत्रण लूप से बाहर निकल जाएगा।
- कोड पंक्ति 10: “कार्यक्रम पूर्ण हुआ” कथन मुद्रित करना
लूप्स की लेबलिंग
PL/SQL में, लूप को लेबल किया जा सकता है। लेबल को “<<” और “>>” के बीच में रखा जाना चाहिए। नेस्टेड लूप कोड में विशेष रूप से लूप की लेबलिंग अधिक पठनीयता प्रदान करेगी। उस विशेष लूप से बाहर निकलने के लिए EXIT कमांड में लेबल दिया जा सकता है। लेबल का उपयोग करके, नियंत्रण को लूप के अंदर कहीं से भी नेस्टेड लूप के बाहरी लूप से सीधे बाहर निकलने के लिए बनाया जा सकता है, इसके लिए exit कमांड के बाद बाहरी लूप लेबल दिया जाता है।
<<OUTER_LOOP>> LOOP <execution_block_starts> . <<INNER_LOOP>> LOOP --inner <execution_part> END LOOP; . <executi_block_ends> END LOOP;
वाक्यविन्यास स्पष्टीकरण:
- उपरोक्त सिंटैक्स में, आउट लूप के अन्दर एक और लूप होता है।
- '< >' और '< ' > ' इन लूपों के लेबल हैं।
उदाहरण 1: इस उदाहरण में, हम बेसिक लूप स्टेटमेंट का उपयोग करके 1 से शुरू होने वाली संख्या प्रिंट करने जा रहे हैं। प्रत्येक संख्या को उसके मान के बराबर बार प्रिंट किया जाएगा। श्रृंखला की ऊपरी सीमा प्रोग्राम घोषणा भाग में तय की गई है। आइए जानें कि हम इसे प्राप्त करने के लिए लेबल अवधारणा का उपयोग कैसे कर सकते हैं। इसके लिए, हम निम्नलिखित कोड निष्पादित करेंगे
DECLARE a NUMBER:=0; b NUMBER; upper-limit NUMBER :=4; BEGIN dbms_output.put_line(‘Program started.' ); «outerloop» LOOP a:=a+1; b:=l; «inner loop» LOOP EXIT 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: 'upper_limit' चर को 'NUMBER' डेटा प्रकार के रूप में '4' मान के साथ घोषित करना
- कोड लाइन 6: “प्रोग्राम शुरू हुआ” कथन मुद्रित करना।
- कोड पंक्ति 7: बाहरी लूप को “outer_loop” के रूप में लेबल किया गया है
- कोड पंक्ति 9: 'a' का मान 1 से बढाया जाता है।
- कोड पंक्ति 11: आंतरिक लूप को “inner_loop” के रूप में लेबल किया गया है।
- कोड पंक्ति 13: EXIT शर्त जो जाँचती है कि क्या मान 'a' 'upper_limit' मान से अधिक है। यदि नहीं तो यह आगे चला जाएगा, अन्यथा यह सीधे बाहरी लूप से बाहर निकल जाएगा।
- कोड पंक्ति 14: 'b' का मान मुद्रित किया जा रहा है।
- कोड पंक्ति 15: 'b' के मान को +1 से बढ़ाता है.
- कोड पंक्ति 16: EXIT शर्त जो जाँचती है कि 'b' का मान 'a' से अधिक है या नहीं। यदि ऐसा है, तो यह आंतरिक लूप से नियंत्रण से बाहर निकल जाएगा।
- कोड पंक्ति 14: “कार्यक्रम पूर्ण हुआ” कथन मुद्रित करना
सारांश
पाश | बेसिक लूप |
निकास मानदंड | निष्पादन भाग में 'EXIT' कीवर्ड आने पर बाहर निकलें |
प्रयोग | इसका उपयोग तब अच्छा होता है जब निकास किसी विशेष स्थिति पर आधारित न हो। |