Oracle उदाहरण के साथ PL/SQL लूप

⚡ स्मार्ट सारांश

PL/SQL लूप किसी कोड के एक भाग को वांछित संख्या में बार-बार निष्पादित करते हैं। PL/SQL में बेसिक, FOR और WHILE लूप उपलब्ध हैं, जिन्हें CONTINUE, EXIT, EXIT WHEN और GOTO द्वारा नियंत्रित किया जाता है, और नेस्टेड संरचनाओं को सुव्यवस्थित रूप से प्रबंधित करने के लिए लूप को लेबल किया जा सकता है।

  • 🔁 उद्देश्य: एक लूप कोड के एक ब्लॉक को कई बार चलाता है, जिससे कोड का आकार और जटिलता कम हो जाती है।
  • 🧭 लूप काउंटर: एक काउंटर वेरिएबल लूप की स्थिति निर्धारित करता है और लूप से बाहर निकलने के लिए इसमें बदलाव होना आवश्यक है।
  • जारी रखें: वर्तमान चरण के शेष भाग को छोड़ देता है और अगले चरण को शुरू करता है।
  • 🚪 बाहर निकलें / बाहर निकलने का समय: यदि कोई बूलियन शर्त सही हो तो यह तुरंत लूप से बाहर निकल जाता है।
  • लेबल: डबल एंगल ब्रैकेट के बीच एक लूप लेबल EXIT को बाहरी लूप को लक्षित करने की अनुमति देता है।
  • बेसिक लूप: यह तब तक चलता है जब तक स्पष्ट रूप से EXIT बटन न दबा दिया जाए; इसके बिना यह हमेशा के लिए लूप में चलता रहता है।
  • 🧩 तीन प्रकार: बेसिक लूप, फॉर लूप और व्हाइल लूप में सामान्य पैटर्न शामिल होते हैं।

Oracle पीएल/एसक्यूएल लूप

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

लूप की मदद से प्रोग्राम के किसी खास हिस्से को तय संख्या में बार चलाया जा सकता है। इस ट्यूटोरियल में हम PL/SQL में लूप की अवधारणा और लूप में नियंत्रण प्रवाह को समझेंगे।

लूप की अवधारणा का परिचय

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

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

नीचे दिया गया चित्र शौचालय को दर्शाता है।ping अवधारणा।

अस्तरping PL/SQL में अवधारणा प्रवाह

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

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

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

लूप की अवधारणा सीखने से पहले, लूप नियंत्रण कथनों को सीखना महत्वपूर्ण है। ये कथन लूप के अंदर निष्पादन के प्रवाह को नियंत्रित करते हैं।

बनी रहेंगी

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

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

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

गोटो

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

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

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

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

PL / SQL यह निम्नलिखित तीन प्रकार के लूप प्रदान करता है:

नीचे दी गई तालिका में बुनियादी लूप को विस्तार से समझाने से पहले तीनों की तुलना की गई है।

पाश निकास मानदंड इसका सर्वोत्तम उपयोग तब किया जाता है जब
बेसिक लूप ब्लॉक में स्पष्ट EXIT निकास किसी निश्चित संख्या या शर्त पर आधारित नहीं है।
पाश के लिए काउंटर अपनी सीमा के अंत तक पहुँच जाता है पुनरावृत्तियों की संख्या पहले से ज्ञात होती है।
WHILE लूप स्थिति झूठी हो जाती है यह लूप तब तक चलना चाहिए जब तक कोई शर्त पूरी न हो जाए।

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

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

PL/SQL में बुनियादी लूप संरचना

LOOP
<execution block starts>
<EXIT condition based on developer criteria>
<execution_block_ends>
END LOOP;

वाक्यविन्यास स्पष्टीकरण:

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

नोट: बिना EXIT कीवर्ड के एक साधारण लूप स्टेटमेंट एक अनंत लूप होता है जो कभी नहीं रुकता।

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

बेसिक लूप प्रिंटिंग संख्याएँ 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 से शुरू होने वाली संख्याओं को प्रिंट करते हैं। प्रत्येक संख्या को उसके मान के बराबर बार प्रिंट किया जाता है। श्रृंखला की ऊपरी सीमा घोषणा भाग में निर्धारित की गई है। इसके लिए हम लेबल अवधारणा का उपयोग करते हैं।

लेबलयुक्त लूप उदाहरण भाग 1लेबलयुक्त लूप उदाहरण भाग 2

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: “प्रोग्राम पूर्ण हो गया” कथन प्रिंट करना।

अक्सर पूछे जाने वाले प्रश्न

EXIT लूप से बिना शर्त बाहर निकल जाता है। EXIT WHEN लूप से तभी बाहर निकलता है जब निम्नलिखित बूलियन एक्सप्रेशन सत्य हो, जिससे एक साधारण EXIT के चारों ओर एक अलग IF की आवश्यकता समाप्त हो जाती है।

एक लेबल आंतरिक लूप में EXIT की अनुमति देता है जिससे एक ही चरण में नामित बाहरी लूप से बाहर निकला जा सकता है। यह नेस्टेड कोड को पढ़ने में भी बहुत आसान बनाता है। tracकिंग प्लेन एंड लूप स्टेटमेंट्स।

यदि ब्लॉक में कोई EXIT बिंदु नहीं है, या काउंटर कभी भी EXIT बिंदु तक नहीं पहुंचता है, तो लूप कभी नहीं रुकता। हमेशा सुनिश्चित करें कि काउंटर EXIT WHEN स्थिति की ओर परिवर्तित हो।

अक्सर, हाँ। एआई कर सकता है। tracयह जांचें कि काउंटर EXIT स्थिति की ओर बढ़ रहा है या नहीं और चेतावनी दें कि जब किसी लूप का कोई निकास मार्ग न हो, हालांकि डेटा-निर्भर निकास की पुष्टि के लिए अभी भी एक परीक्षण रन की आवश्यकता होती है।

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

इस पोस्ट को संक्षेप में इस प्रकार लिखें: