Oracle PL/SQL FOR LOOP उदाहरण सहित

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

Oracle PL/SQL FOR लूप एक कोड ब्लॉक को एक निश्चित सीमा के भीतर एक निश्चित संख्या में बार चलाता है। लूप वेरिएबल को स्वतः घोषित किया जाता है और यह स्वतः बढ़ता रहता है, इसलिए किसी मैन्युअल काउंटर की आवश्यकता नहीं होती है, और REVERSE कीवर्ड लूप को उल्टी दिशा में गिनने की अनुमति देता है।

  • 🔢 के लिए सबसे अच्छा: FOR लूप किसी अनिश्चित स्थिति के बजाय ज्ञात पुनरावृत्ति संख्या के लिए उपयुक्त होता है।
  • 📏 रेंज: एक निचली और एक ऊपरी सीमा यह परिभाषित करती है कि लूप कितनी बार चलता है।
  • ⚙️ अप्रत्यक्ष प्रतिकार: लूप वेरिएबल स्वचालित रूप से घोषित होता है और अपने आप बढ़ता रहता है।
  • 🎯 दायरा: लूप वेरिएबल केवल लूप के अंदर ही मौजूद होता है।
  • 🔄 रिवर्स: निचली सीमा से पहले REVERSE जोड़ने से लूप उल्टी गिनती करने लगता है।
  • 🪜 नेस्टेड: लूप को नेस्टेड किया जा सकता है, और प्रत्येक बाहरी पुनरावृति के लिए आंतरिक लूप पूरी तरह से चलता है।
  • 🚪 ऑटो एग्जिट: जब वेरिएबल निर्धारित सीमा से बाहर निकल जाता है तो लूप अपने आप समाप्त हो जाता है।

Oracle पीएल/एसक्यूएल फॉर लूप

FOR लूप क्या है?

"फॉर लूप" स्टेटमेंट तब सबसे उपयुक्त होता है जब आप किसी कोड को किसी अन्य शर्त के आधार पर नहीं, बल्कि ज्ञात संख्या में बार निष्पादित करना चाहते हैं।

इस लूप में, एक निचली सीमा और एक ऊपरी सीमा निर्दिष्ट की जाती है, और जब तक लूप चर इस सीमा के भीतर रहता है, तब तक लूप चलता रहता है।

लूप वेरिएबल स्वतः वृद्धिशील है, इसलिए किसी स्पष्ट वृद्धि प्रक्रिया की आवश्यकता नहीं है। लूप वेरिएबल को घोषित करने की आवश्यकता नहीं है, क्योंकि यह स्वतः ही घोषित हो जाता है।

FOR <loop_variable> in <lower_limit> .. <higher_limit>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;

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

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

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

FOR लूप 1 से 5 तक की संख्याएँ प्रिंट कर रहा है

BEGIN
dbms_output.put_line('Program started.');
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code स्पष्टीकरण:

  • Code पंक्ति 2: “प्रोग्राम शुरू हो गया” कथन प्रिंट करना।
  • Code पंक्ति 3: 'FOR' कीवर्ड लूप की शुरुआत को दर्शाता है और लूप_वेरिएबल 'a' घोषित किया जाता है। अब यह 1 से 5 तक के मान ग्रहण करता है।
  • Code पंक्ति 5: 'a' का मान प्रिंट करता है.
  • Code पंक्ति 6: 'END LOOP' कीवर्ड निष्पादन ब्लॉक के अंत को चिह्नित करता है।
  • लाइन 5 तब तक निष्पादित होती रहती है जब तक 'a' का मान 6 तक नहीं पहुंच जाता, जिस बिंदु पर शर्त विफल हो जाती है और नियंत्रण लूप से बाहर निकल जाता है।
  • Code पंक्ति 7: “प्रोग्राम पूर्ण हो गया” कथन प्रिंट करना।

स्थिर फंदा

लूप स्टेटमेंट को नेस्टेड भी किया जा सकता है। बाहरी और आंतरिक लूप अलग-अलग प्रकार के हो सकते हैं। नेस्टेड लूप में, बाहरी लूप के प्रत्येक पुनरावृति के लिए, आंतरिक लूप पूरी तरह से निष्पादित होता है।

नेस्टेड लूप संरचना

LOOP --outer
<execution block starts>
LOOP --inner
<execution_part>
END LOOP;
<execution_block_ends>
END LOOP;

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

  • बाहरी लूप के अंदर एक और लूप है।
  • लूप किसी भी प्रकार के हो सकते हैं, और निष्पादन की कार्यप्रणाली समान होती है।

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

नेस्टेड FOR लूप का उदाहरण भाग 1

नेस्टेड FOR लूप का उदाहरण भाग 2

DECLARE
b NUMBER;
BEGIN
dbms_output.put_line('Program started');
FOR a IN 1..3
LOOP
b:= 1;
WHILE (a>=b)
LOOP
dbms_output.put_line(a);
b:= b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code स्पष्टीकरण:

  • Code पंक्ति 2: 'b' नामक चर को 'NUMBER' डेटा प्रकार के रूप में घोषित करना।
  • Code पंक्ति 4: “प्रोग्राम शुरू हो गया” कथन प्रिंट करना।
  • Code पंक्ति 5: 'FOR' कीवर्ड लूप की शुरुआत को दर्शाता है और लूप_वेरिएबल 'a' घोषित किया जाता है। अब यह 1 से 3 तक के मान ग्रहण करता है।
  • Code पंक्ति 7: प्रत्येक बार 'b' का मान '1' पर रीसेट करना।
  • Code पंक्ति 8: भीतरी घुमाव के दौरान a>=b स्थिति की जांच करता है.
  • Code पंक्ति 10: 'a' का मान तब तक प्रिंट करता है जब तक कि उपरोक्त शर्त पूरी हो जाती है।
  • Code पंक्ति 14: “प्रोग्राम पूर्ण हो गया” कथन प्रिंट करना।

फॉर लूप और रिवर्स फॉर लूप

डिफ़ॉल्ट रूप से, FOR लूप निचली सीमा से ऊपरी सीमा तक गिनती करता है। REVERSE कीवर्ड जोड़ने से यह नीचे की ओर गिनती करता है।ping सीमाएँ उसी क्रम में हैं। दोनों रूपों को नीचे एक साथ दिखाया गया है ताकि अंतर स्पष्ट हो सके।

प्रपत्र हैडर मूल्यों का क्रम
आरोही FOR a IN 1 .. 5 1, 2, 3, 4, 5
अवरोही उल्टे क्रम में 1 .. 5 5, 4, 3, 2, 1

ध्यान दें कि REVERSE का उपयोग करने पर भी, निचली सीमा ऊपरी सीमा से पहले ही लिखी जाती है; केवल पुनरावृति की दिशा बदलती है। उन लूपों के लिए जिनकी गणना पहले से ज्ञात नहीं होती है, बुनियादी लूप बेहतर विकल्प है।

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

नहीं। FOR लूप अपने वेरिएबल को अप्रत्यक्ष रूप से घोषित करता है, और यह केवल लूप के अंदर ही मौजूद होता है। लूप के बाहर उसी नाम का वेरिएबल घोषित करने से लूप द्वारा उपयोग किए जा रहे वेरिएबल पर कोई प्रभाव नहीं पड़ता।

REVERSE विधि लूप को ऊपरी सीमा से निचली सीमा तक ले जाती है। सीमाएं अभी भी निम्न से उच्च क्रम में लिखी जाती हैं; केवल मानों के क्रम में परिवर्तन होता है।

जब पुनरावृत्तियों की संख्या पहले से ज्ञात हो, जैसे कि एक निश्चित सीमा, तो FOR लूप का उपयोग करें। जब लूप किसी शर्त के पूरा होने तक चलना चाहिए और गिनती निश्चित न हो, तो WHILE लूप का उपयोग करें।

हाँ, जब मूल लूप केवल दो निश्चित मानों के बीच गिनती करता है। AI मैन्युअल काउंटर और EXIT को FOR रेंज लूप से बदल सकता है, जिससे कोड छोटा हो जाता है। कृपया सुनिश्चित करें कि सीमाएँ मूल सीमा से मेल खाती हैं।

नहीं। लूप के अंदर लूप वेरिएबल केवल रीड-ओनली होता है, इसलिए इसे असाइन करने पर कंपाइल एरर आ जाएगी। फ्लो को बदलने के लिए, एक अलग वेरिएबल का उपयोग करें या EXIT कमांड से लूप से बाहर निकलें।

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