Oracle PL/SQL FOR LOOP उदाहरण सहित
⚡ स्मार्ट सारांश
Oracle PL/SQL FOR लूप एक कोड ब्लॉक को एक निश्चित सीमा के भीतर एक निश्चित संख्या में बार चलाता है। लूप वेरिएबल को स्वतः घोषित किया जाता है और यह स्वतः बढ़ता रहता है, इसलिए किसी मैन्युअल काउंटर की आवश्यकता नहीं होती है, और REVERSE कीवर्ड लूप को उल्टी दिशा में गिनने की अनुमति देता है।
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 तक की संख्याएँ प्रिंट करते हैं।
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 तक की संख्याएँ प्रिंट करते हैं। प्रत्येक संख्या को उसके मान के बराबर बार प्रिंट किया जाता है।
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 का उपयोग करने पर भी, निचली सीमा ऊपरी सीमा से पहले ही लिखी जाती है; केवल पुनरावृति की दिशा बदलती है। उन लूपों के लिए जिनकी गणना पहले से ज्ञात नहीं होती है, बुनियादी लूप बेहतर विकल्प है।





