Iterative statements: Loop-End Loop, For-Loop, While Loop, Exit Loop, Continue

Loops automated command wheels की तरह काम करते हैं जो code के blocks को कुशलता से दोहराते हैं जब तक उनकी exit conditions उन्हें रुकने को न कहें।

12 min read · 11 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

Automated Printing Press

कल्पना कीजिए आप CampusLib database के लिए backend terminal operations चला रहे हैं। head librarian आपसे 50 अलग students के लिए एक personalized warning message print करने को कहती है जिनके पास overdue books हैं। वही DBMS_OUTPUT.PUT_LINE statement हाथ से बढ़ाए numbers के साथ 50 बार लिखना सिर्फ़ थकाऊ नहीं, यह आपके code को bloated और पूरी तरह amateurish बनाता है। lines दोहराए बिना repetitive database actions निर्दोष रूप से करने के लिए, हम iterative loops इस्तेमाल करते हैं। Oracle PL/SQL में, इन cycles को सँभालने के लिए हमारे पास तीन अलग loop strategies हैं।

Theory

Ceiling Fan और Push-Up Count

एक Basic Loop को पूरी speed पर चलते एक ceiling fan की तरह सोचिए; यह एक infinite loop में हमेशा घूमता रहेगा जब तक आप स्पष्ट रूप से wall switch (EXIT) न मारें। एक WHILE loop एक खुले umbrella के साथ बाहर चलने जैसा है; आप जब तक बारिश गिर रही है तब तक चलते रहते हैं, पर जिस पल बौछार रुकती है, आप frame बंद करते और अंदर क़दम रखते हैं। एक FOR loop अपने सुबह के gym workout के दौरान बिल्कुल 20 push-ups करने जैसा है; आप पहला rep शुरू करने से पहले ही बिल्कुल starting count (1) और बिल्कुल ending target (20) जानते हैं।

Theory

Iteration के तीन रूप

PL/SQL iterative logic को तीन स्वादों में बाँटता है: Basic Loop (default रूप से infinite), WHILE Loop (entry gate पर conditional validation), और FOR Loop (counter-driven boundaries)। इन blocks को कुशलता से manage करने के लिए transition keywords पर पूर्ण महारत चाहिए: EXIT WHEN एक sequence से जल्दी बाहर निकलता है, जबकि CONTINUE Oracle को मौजूदा loop की बची lines skip करने और सीधे अगली iteration के ऊपर कूदने को कहता है।

At a glance

PL/SQL loop configurations के संरचनात्मक behaviors और गुण।

Loop TypeCondition CheckpointCounter ManagementIdeal Use Case
Basic Loopस्पष्ट EXIT rules के ज़रिए body के अंदरमैनुअल adjustment ज़रूरी (v_counter := v_counter + 1;)जब loop statements एक rule test करने से पहले कम से कम एक बार execute होने चाहिए
WHILE Loopentry gate पर Pre-execution checkexecution block के अंदर मैनुअल adjustment ज़रूरीजब iterations की कुल संख्या एक external volatile condition पर निर्भर हो
FOR Loopentry gate पर Pre-calculated range checkAutomatic management; index अंतर्निहित रूप से declared और incremented होता हैजब आप पहले से बिल्कुल lower और upper boundaries जानते हैं

Practical

Fines Track करना और Iterations में Holidays Skip करना

-- An anonymous block comparing a Basic Loop and a counter-driven FOR Loop
DECLARE
  v_basic_counter NUMBER := 1;
  v_total_fine    NUMBER := 0;
BEGIN
  DBMS_OUTPUT.PUT_LINE('--- 1. Processing via Basic Loop ---');
  LOOP
    v_total_fine := v_total_fine + 5;
    DBMS_OUTPUT.PUT_LINE('Day ' || v_basic_counter || ' Fine: Rs. ' || v_total_fine);
    
    v_basic_counter := v_basic_counter + 1;
    -- Mandatory exit guard to prevent system freeze
    EXIT WHEN v_basic_counter > 5;
  END LOOP;

  DBMS_OUTPUT.PUT_LINE('--- 2. Processing via Counter-Driven FOR Loop ---');
  -- Note: loop_idx does NOT need to be declared in the DECLARE section!
  FOR loop_idx IN 1..5 LOOP
    -- Using CONTINUE to skip an entry point dynamically
    IF loop_idx = 3 THEN
      DBMS_OUTPUT.PUT_LINE('Day 3 is a College Holiday! Skipping generation.');
      CONTINUE;
    END IF;
    
    DBMS_OUTPUT.PUT_LINE('Day ' || loop_idx || ' automated ledger entry processed.');
  END LOOP;
END;
/

Copy करके Oracle FreeSQL खोलें
Oracle FreeSQL, Oracle SQL का मुफ़्त online editor है। Code पहले copy हो जाता है: उसे वहां paste करके Run करें।

Follow along

एक FOR Loop का Internal Sequence

  1. 1. Implicit Setup Oracle engine FOR loop statement register करता है और counter variable को अंतर्निहित रूप से एक integer के रूप में पर्दे के पीछे अपने-आप declare करता है।
  2. 2. Range Initialization compiler boundaries जाँचता है (जैसे 1..5)। अगर lower value, upper target से कम या बराबर है, execution अंदर गिरता है।
  3. 3. Automated Stepping मेल खाते END LOOP marker से टकराने पर, Oracle arithmetic step internally सँभालता है, counter को मैनुअल code prompts के बिना 1 से update करते हुए।
  4. 4. Automated Context Purge एक बार index upper range boundary पार करता है, loop समाप्त होता है और implicit index variable स्थायी रूप से session memory से मिटा दिया जाता है।

Quiz

क्या होता है अगर आप एक PL/SQL FOR loop के body के अंदर loop index variable को हाथ से modify या एक value assign करने की कोशिश करते हैं (जैसे 'loop_idx := loop_idx + 2;' लिखना)?

  1. statement सफलतापूर्वक execute होती है और loop का stride step बदलती है।
  2. block चलता है पर FOR loop को एक infinite Basic Loop में बदल देता है।
  3. Oracle एक तुरंत compilation error फेंकता है क्योंकि एक FOR loop counter loop body के अंदर सख़्ती से एक read-only variable है।
  4. block सफलतापूर्वक compile होता है पर runtime पर line को पूरी तरह अनदेखा करता है।
Show the answer

Oracle एक तुरंत compilation error फेंकता है क्योंकि एक FOR loop counter loop body के अंदर सख़्ती से एक read-only variable है।

Oracle PL/SQL में, एक FOR loop का loop counter विशेष रूप से database server द्वारा manage होता है और loop के execution context के भीतर सख़्ती से read-only है। इसके value को हाथ से overwrite या बदलने की कोई भी कोशिश एक syntax compilation crash trigger करती है।

Watch out

REVERSE Boundary जाल

जब आप एक FOR loop को 10 से नीचे 1 तक उल्टा गिनने देना चाहते हैं, आप सहज रूप से FOR i IN 10..1 LOOP लिख सकते हैं। यह एक परम जाल है! Oracle सख़्ती से लागू करता है कि lower bound हमेशा बाईं ओर बैठे और upper bound दाईं ओर। reverse cycles चलाने के लिए, आपको FOR i IN REVERSE 1..10 LOOP लिखना होगा। अगर आप 10..1 लिखते हैं, Oracle मूल्यांकन करता है कि 10, 1 से बड़ा है, boundary validation में विफल होता है, और एक भी line execute किए बिना पूरा loop block skip कर देता है!

Think first

Loop Index Variable Masking Test

Mental Challenge: अगर आप अपने DECLARE block में 'v_counter NUMBER := 100;' नामक एक variable declare करते हैं, और फिर 'FOR v_counter IN 1..5 LOOP' के रूप में संरचित एक loop execute करते हैं, END LOOP statement के तुरंत बाद v_counter reference करने पर कौन सा value print होगा? variable scope के बारे में सोचिए।

Show the answer

यह 100 print करेगा! FOR loop के अंदर इस्तेमाल किया 'v_counter' index एक पूरी तरह अलग implicit variable है जो अस्थायी रूप से आपके outer variable को mask करता है। यह loop की शुरुआत में जन्म लेता है और 'END LOOP;' पर नष्ट होता है। इसलिए, outer variable पूरी तरह अछूता रहता है और अपना original value 100 सुरक्षित रखता है।

Theory

University Lab Exam Scoring आदत

Semester 4 database lab evaluation grade करते External examiners अक्सर आपके Basic Loops को ख़ास तौर पर एक EXIT condition की मौजूदगी के लिए जाँचते हैं। अगर आप कागज़ या एक terminal screen पर एक basic LOOP-END LOOP structure लिखते हैं बिना इसे एक स्पष्ट EXIT WHEN statement के साथ जोड़े, आप एक दुर्भावनापूर्ण infinite lockup risk पेश करने के लिए तुरंत performance marks खो देंगे।

Summary

Key takeaways

  • Iterative loops redundant code blocks बनाए बिना repetitive operations सुरक्षित रूप से automate करते हैं।
  • Basic Loops लगातार चलते हैं और execution से बाहर निकलने के लिए एक स्पष्ट EXIT marker चाहिए।
  • WHILE Loops किसी भी internal code lines process करने से पहले initial entry gate पर conditions का आकलन करते हैं।
  • FOR Loops अपने-आप index variables और range bounds manage करते हैं, loop counters को read-only मानते हुए।
  • REVERSE loop syntax को सख़्ती से lower bound पहले सूचीबद्ध चाहिए, इस तरह: REVERSE lower..upper।
  • CONTINUE modifier सीधे अगली pass पर कूदने के लिए सक्रिय loop cycle के बाक़ी को bypass करता है।
  • Memory hook: Basic loops को एक मैनुअल switch चाहिए, WHILE entry gate filter करता है, और FOR अपने gears ख़ुद चलाता है!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from PL/SQL and Conditional and Iterative Statements

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Iterative statements: Loop-End Loop, For-Loop, While Loop, Exit Loop, Continue · Concepts of Relational Database Management Systems · Gri-Learn