Oracle उदाहरण के साथ PL/SQL लूप
⚡ स्मार्ट सारांश
PL/SQL लूप किसी कोड के एक भाग को वांछित संख्या में बार-बार निष्पादित करते हैं। PL/SQL में बेसिक, FOR और WHILE लूप उपलब्ध हैं, जिन्हें CONTINUE, EXIT, EXIT WHEN और GOTO द्वारा नियंत्रित किया जाता है, और नेस्टेड संरचनाओं को सुव्यवस्थित रूप से प्रबंधित करने के लिए लूप को लेबल किया जा सकता है।
लूप्स क्या हैं?
लूप की मदद से प्रोग्राम के किसी खास हिस्से को तय संख्या में बार चलाया जा सकता है। इस ट्यूटोरियल में हम PL/SQL में लूप की अवधारणा और लूप में नियंत्रण प्रवाह को समझेंगे।
लूप की अवधारणा का परिचय
कोडिंग में लूप की अवधारणा निम्नलिखित लाभ प्रदान करती है:
- कोड की पुन: प्रयोज्यता।
- कोड का आकार कम हो गया।
- नियंत्रण का सुगम प्रवाह।
- जटिलता कम हुई.
नीचे दिया गया चित्र शौचालय को दर्शाता है।ping अवधारणा।
ऊपर दिए गए आरेख में, लूप की स्थिति की जाँच की जाती है, और जब तक यह संतुष्ट होती है, निष्पादन ब्लॉक चलता रहता है।
प्रत्येक पुनरावृति में, लूप की स्थिति निर्धारित करने वाला लूप काउंटर चर बदलना चाहिए ताकि नियंत्रण लूप से बाहर निकल सके। कुछ मामलों में यह काउंटर एक पूर्वनिर्धारित संख्या के लिए वृद्धि या कमी करता है, और अन्य मामलों में यह एक खोज स्थिति होती है जो ब्लॉक को तब तक निष्पादित करती रहती है जब तक कि वह संतुष्ट न हो जाए।
लूप नियंत्रण विवरण
लूप की अवधारणा सीखने से पहले, लूप नियंत्रण कथनों को सीखना महत्वपूर्ण है। ये कथन लूप के अंदर निष्पादन के प्रवाह को नियंत्रित करते हैं।
बनी रहेंगी
यह कीवर्ड PL/SQL इंजन को निर्देश देता है कि जब भी उसे लूप के अंदर CONTINUE मिले, तो वह निष्पादन ब्लॉक में शेष कोड को छोड़ दे और तुरंत अगला चरण शुरू कर दे। इसका उपयोग मुख्य रूप से तब किया जाता है जब लूप के अंदर के कोड को कुछ निश्चित चरण मानों के लिए छोड़ना हो।
बाहर निकलें / बाहर निकलें जब
यह कीवर्ड PL/SQL इंजन को वर्तमान लूप से तुरंत बाहर निकलने का निर्देश देता है। नेस्टेड लूप में, आंतरिक लूप में 'EXIT' का प्रयोग करने से केवल आंतरिक लूप ही बंद होता है, बाहरी लूप बंद नहीं होता। 'EXIT WHEN' के बाद एक ऐसा एक्सप्रेशन आता है जो बूलियन परिणाम देता है; यदि परिणाम TRUE है, तो नियंत्रण समाप्त हो जाता है।
गोटो
यह कथन नियंत्रण को लेबल किए गए कथन (“GOTO ;”) को स्थानांतरित करता है। इस पर निम्नलिखित प्रतिबंध हैं:
- नियंत्रण का हस्तांतरण केवल उपकार्यक्रमों के भीतर ही किया जा सकता है।
- अपवाद-निपटान भाग से निष्पादन भाग में नियंत्रण का स्थानांतरण नहीं किया जा सकता है।
इस कथन का उपयोग तब तक अनुशंसित नहीं है जब तक कोई विकल्प न हो, क्योंकि कोड-नियंत्रण tracजब नियंत्रण एक पक्ष से दूसरे पक्ष को हस्तांतरित किया जाता है तो दक्षता बहुत मुश्किल हो जाती है।
PL/SQL में लूप के प्रकार
PL / SQL यह निम्नलिखित तीन प्रकार के लूप प्रदान करता है:
- मूल लूप कथन
- फॉर लूप स्टेटमेंट
- While लूप कथन
नीचे दी गई तालिका में बुनियादी लूप को विस्तार से समझाने से पहले तीनों की तुलना की गई है।
| पाश | निकास मानदंड | इसका सर्वोत्तम उपयोग तब किया जाता है जब |
|---|---|---|
| बेसिक लूप | ब्लॉक में स्पष्ट EXIT | निकास किसी निश्चित संख्या या शर्त पर आधारित नहीं है। |
| पाश के लिए | काउंटर अपनी सीमा के अंत तक पहुँच जाता है | पुनरावृत्तियों की संख्या पहले से ज्ञात होती है। |
| 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 कीवर्ड के एक साधारण लूप स्टेटमेंट एक अनंत लूप होता है जो कभी नहीं रुकता।
उदाहरण 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; /
Code स्पष्टीकरण:
- Code पंक्ति 2: 'a' नामक चर को 'NUMBER' के रूप में घोषित करना और उसे '1' मान से आरंभ करना।
- Code पंक्ति 4: “प्रोग्राम शुरू हो गया” कथन प्रिंट करना।
- Code पंक्ति 5: 'LOOP' कीवर्ड लूप की शुरुआत को दर्शाता है।
- Code पंक्ति 6: 'a' का मान प्रिंट करता है.
- Code पंक्ति 7: 'a' का मान 1 से बढ़ाता है।
- Code पंक्ति 8: जाँचता है कि 'a' का मान 5 से अधिक है या नहीं।
- Code पंक्ति 9: 'END LOOP' कीवर्ड निष्पादन ब्लॉक के अंत को चिह्नित करता है।
- पंक्ति 6 से 8 तब तक निष्पादित होती रहती हैं जब तक 'a' 6 तक नहीं पहुंच जाता, जिस बिंदु पर शर्त TRUE लौटाती है और नियंत्रण लूप से बाहर निकल जाता है।
- Code पंक्ति 10: “प्रोग्राम पूर्ण हो गया” कथन प्रिंट करना।
लूप्स की लेबलिंग
PL/SQL में, लूप को लेबल किया जा सकता है। लेबल को “<<” और “>>” के बीच में रखना चाहिए। लूप को लेबल करने से, विशेष रूप से नेस्टेड लूप में, पठनीयता बढ़ जाती है। लेबल को EXIT कमांड में दिया जा सकता है ताकि उस विशेष लूप से बाहर निकला जा सके। इस प्रकार, EXIT कमांड के बाद बाहरी लूप का लेबल देकर कंट्रोल सीधे नेस्टेड संरचना के बाहरी लूप से बाहर निकल सकता है।
<<OUTER_LOOP>> LOOP <execution_block_starts> . <<INNER_LOOP>> LOOP --inner <execution_part> END LOOP; . <execution_block_ends> END LOOP;
वाक्यविन्यास स्पष्टीकरण:
- बाहरी लूप के अंदर एक और लूप है।
- '< >' और '< >' इन लूपों के लेबल हैं।
उदाहरण 1: इस उदाहरण में, हम एक साधारण लूप स्टेटमेंट का उपयोग करके 1 से शुरू होने वाली संख्याओं को प्रिंट करते हैं। प्रत्येक संख्या को उसके मान के बराबर बार प्रिंट किया जाता है। श्रृंखला की ऊपरी सीमा घोषणा भाग में निर्धारित की गई है। इसके लिए हम लेबल अवधारणा का उपयोग करते हैं।
DECLARE a NUMBER:= 0; b NUMBER; upper_limit NUMBER := 4; BEGIN dbms_output.put_line('Program started.'); <<outer_loop>> LOOP a:= a+1; b:= 1; <<inner_loop>> LOOP EXIT outer_loop WHEN a > upper_limit; dbms_output.put_line(a); b:= b+1; EXIT inner_loop WHEN b>a; END LOOP; END LOOP; dbms_output.put_line('Program completed.'); END; /
Code स्पष्टीकरण:
- Code पंक्ति 2-3: 'a' और 'b' नामक चरों को 'NUMBER' डेटा प्रकार के रूप में घोषित करना।
- Code पंक्ति 4: 'upper_limit' नामक चर को 'NUMBER' के रूप में घोषित किया जा रहा है और इसका मान '4' है।
- Code पंक्ति 6: “प्रोग्राम शुरू हो गया” कथन प्रिंट करना।
- Code पंक्ति 7: बाहरी लूप को “outer_loop” नाम दिया गया है।
- Code पंक्ति 9: 'a' का मान 1 से बढाया जाता है।
- Code पंक्ति 11: आंतरिक लूप को “inner_loop” नाम दिया गया है।
- Code पंक्ति 13: यह EXIT कंडीशन जांच करती है कि क्या 'a' का मान 'upper_limit' से अधिक है। यदि नहीं, तो यह आगे बढ़ता है; अन्यथा यह सीधे बाहरी लूप से बाहर निकल जाता है।
- Code पंक्ति 14: 'b' का मान मुद्रित किया जा रहा है।
- Code पंक्ति 15: 'b' का मान 1 से बढ़ाता है।
- Code पंक्ति 16: यह एक EXIT कंडीशन है जो यह जांचती है कि 'b' 'a' से बड़ा है या नहीं। यदि 'b' बड़ा है, तो यह आंतरिक लूप से बाहर निकल जाता है।
- Code पंक्ति 19: “प्रोग्राम पूर्ण हो गया” कथन प्रिंट करना।







