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

Iterative statements आपके database code को एक ख़ास condition पूरी होने तक SQL commands के एक set को अपने-आप कई बार दोहराने देते हैं।

10 min read · 10 cards · 2 checks

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


Theory

दोहराए ticket updates को स्वचालित करना

कल्पना कीजिए TicketDesk पर आपके manager चाहते हैं आप एक कतार में 10 pending tickets के लिए एक automated alert message print करें। क्या आप अपने script में DBMS_OUTPUT.PUT_LINE statement 10 अलग बार हाथ से लिखेंगे? क्या हो अगर कल 1000 tickets हों? आपका code विशाल और बेक़ाबू हो जाएगा। आपको एक structural औज़ार चाहिए जो code का एक अकेला block बार-बार execute कर सके जबकि अपने-आप हिसाब रखे कि सँभालने को कितने records बचे हैं।

Theory

Supermarket Scanner

एक supermarket पर एक billing counter के बारे में सोचिए। cashier आपकी shopping basket में हर item के लिए एक बिल्कुल नया computer program boot नहीं करता। इसके बजाय, वे एक सरल process चलाते हैं: एक item पकड़ो, इसे optical scanner के आर-पार गुज़ारो, और कुल price में जोड़ो। वे इस बिल्कुल action loop को बार-बार दोहराते हैं। जब basket पूरी तरह ख़ाली हो जाती है, loop अपने-आप टूटता है और वे आपका bill अंतिम रूप देते हैं।

Theory

Oracle Dialect में Iterative Statements

Oracle PL/SQL में, iterative statements control mechanisms हैं जो code statements के एक sequence को कई बार execute करते हैं। PL/SQL तीन मुख्य loop किस्में देता है: basic loop (LOOP ... END LOOP), conditional WHILE loop, और counter-driven FOR loop। इस दोहराव को महीन तरीक़े से समायोजित करने के लिए, आप loop controls इस्तेमाल करते हैं: एक loop से तुरंत बाहर निकलने के लिए EXIT या EXIT WHEN, और मौजूदा iteration में बचा code छोड़कर सीधे अगले cycle पर कूदने के लिए CONTINUE या CONTINUE WHEN।

At a glance

तीन मुख्य Oracle PL/SQL iteration types के operational profiles

Loop StructureCondition कब जाँची जाती हैBest Use Case
Basic Loopbody के अंदर explicit EXIT WHEN के ज़रिएजब loop body कम से कम एक बार चलनी चाहिए
WHILE Looploop में घुसने से पहले शीर्ष परजब दोहराना एक बदलती condition पर निर्भर करता है
FOR Loopएक निश्चित index range के लिए शीर्ष परजब आप पहले से बिल्कुल iteration count जानते हैं

Practical

Loops इस्तेमाल करके Tickets का एक Batch Process करना

-- Enable text rendering in the Oracle engine
SET SERVEROUTPUT ON;

DECLARE
  v_counter NUMBER := 1;
  v_max_tickets NUMBER := 3;
BEGIN
  DBMS_OUTPUT.PUT_LINE('=== Starting Basic Loop ===');
  LOOP
    DBMS_OUTPUT.PUT_LINE('Processing Ticket ID: ' || v_counter);
    v_counter := v_counter + 1;
    
    -- Explicit exit condition safely stops the execution
    EXIT WHEN v_counter > v_max_tickets;
  END LOOP;

  DBMS_OUTPUT.PUT_LINE('=== Starting FOR Loop Control ===');
  -- The loop index variable i is implicitly declared here
  FOR i IN 1..3 LOOP
    IF i = 2 THEN
      -- Skip processing for ticket 2 and proceed to next index
      CONTINUE;
    END IF;
    DBMS_OUTPUT.PUT_LINE('Handling Priority Index: ' || i);
  END LOOP;
END;
/

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

Quiz

एक Oracle PL/SQL FOR loop statement के अंदर एक निश्चित numeric range परिभाषित करने के लिए सही syntax क्या है?

  1. FOR i IN 1 TO 10 LOOP
  2. FOR i IN 1..10 LOOP
  3. FOR i = 1 TO 10 LOOP
  4. FOR i IN 1...10 LOOP
Show the answer

FOR i IN 1..10 LOOP

Oracle PL/SQL एक FOR loop के अंदर दो integers के बीच एक समावेशी range दर्शाने के लिए एक double period operator (..) इस्तेमाल करता है। TO या equal signs जैसे keywords इस language dialect में अमान्य loop constraints हैं और आपकी lab exam के दौरान एक तुरंत compilation failure trigger करेंगे।

Think first

Mental Challenge: Execution का अंतर

क्या होता है अगर एक WHILE loop condition अपनी बिल्कुल पहली जाँच पर FALSE evaluate होती है? क्या loop body बिल्कुल execute होती है? tap करने से पहले execution रास्ता मन में समझिए।

Show the answer

loop body एक बार भी execute नहीं होगी! एक WHILE loop engine को अंदर आने देने से पहले अपनी entry condition बिल्कुल शीर्ष पर evaluate करती है। अगर statement तुरंत false evaluate होता है, engine पूरी तरह END LOOP statement को छोड़ देता है, सीधे बाद के program logic पर कूदते हुए।

Watch out

भयानक Infinite Loop दुःस्वप्न

lab practicals में BCA students द्वारा की गई सबसे बार-बार होने वाली error एक basic LOOP के अंदर loop counter बढ़ाना भूलना है। अगर आप v_counter := v_counter + 1; छोड़ देते हैं, आपका counter हमेशा के लिए अपने शुरुआती value पर अटका रहता है। क्योंकि आपका EXIT WHEN clause कभी true नहीं हो सकता, database engine एक अनंत cycle process करने में अहम memory खपाएगा जब तक terminal lock न हो जाए या server पूरी तरह crash न हो जाए।

Theory

Cursor Navigation और भविष्य के Sync Routines

production enterprise environments में, loops को live table records की rows के बीच dynamically चलने के लिए सीधे cursors के साथ जोड़ा जाता है। आप इस pattern का अगले semester अपने Sem 3 SQLite mobile database sync routines में व्यापक इस्तेमाल करेंगे, जहाँ आप smartphone diagnostic signals जाँचने और local logs को central backend master server तक एक बार में एक record भेजने के लिए एक loop program करेंगे।

Summary

Key takeaways

  • Basic loops एक explicit exit condition statement द्वारा रोके जाने तक अनिश्चित काल तक चलते हैं।
  • WHILE loops कोई block statements execute करने से पहले entry boundary पर conditions जाँचते हैं।
  • FOR loops एक implicitly declared numerical index इस्तेमाल करके range प्रगति सुरक्षित रूप से स्वचालित करते हैं।
  • EXIT keyword loop execution पूरी तरह समाप्त करता है और block boundary के परे कूदता है।
  • CONTINUE modifier मौजूदा loop cycle को दरकिनार करता है ताकि बाद की iteration सीधे शुरू हो।
  • Memory hook: दोहराने को Loop, पूरा करने को exit, dot-dot से गिनो, continue से छोड़ो!

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 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 · Mastering SQL - PL/SQL (SEC-02 option A) · Gri-Learn