Conditional Statements: IF-THEN, IF-ELSE, multiple conditions, nested IF, CASE

Conditional statements decision-making checkpoints हैं जो आपके code को अलग execution paths पर guide करते हैं इस आधार पर कि क्या एक ख़ास rule true या false निकलता है।

12 min read · 11 cards · 2 checks

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


Theory

Fine-Slab की दुविधा

कल्पना कीजिए एक student CampusLib counter पर एक किताब देर से लौटाता है। database program के तौर पर, आप सबको एक सपाट 20 rupees penalty नहीं लगा सकते। अगर एक किताब 1 से 5 दिन देर से है, fine Rs. 2 प्रति दिन है। अगर यह 6 से 10 दिन देर से है, यह Rs. 5 प्रति दिन तक कूदता है। अगर यह 10 दिन पार करती है, यह Rs. 10 प्रति दिन तक बढ़ता है, और उनका library card तुरंत suspend होना चाहिए। हम अपने database engine को एक variable number of overdue days देखने और समझदारी से सही operational penalty चुनने के लिए कैसे सिखाते हैं?

Theory

Railway Track Diverter

standard SQL queries को एक अकेले सीधे track पर चलती एक bullet train की तरह सोचिए, यह बिना चुनाव किए data के हर block को क्रमिक रूप से मारती है। PL/SQL conditional statements एक व्यस्त railway junction पर एक track switcher की तरह काम करते हैं। एक ख़ास signaling rule के आधार पर (जैसे क्या train एक Express है या एक local?), track dynamically shift होता है, train को एक ख़ास route पर भेजते हुए जबकि वैकल्पिक pathways को पूरी तरह अनदेखा करते हुए।

Theory

Decision Making की Syntax

औपचारिक रूप से, PL/SQL decisions को logical branching structures इस्तेमाल करके सँभालता है। C, C++, या Java के उलट, जो curly braces {} और else if जैसे keywords इस्तेमाल करते हैं, Oracle PL/SQL THEN, ELSIF जैसे साफ़, स्पष्ट keywords पर निर्भर करता है, और पूरी condition architecture को एक निश्चित END IF; statement इस्तेमाल करके समाप्त करता है। हर conditional check एक expression को TRUE, FALSE, या NULL में evaluate करता है, code execution को तदनुसार route करते हुए।

At a glance

Oracle PL/SQL में उपलब्ध मूल conditional architectures।

Structure TypeKeyword LayoutEvaluation RuleBest Used For
Single ChoiceIF ... THEN ... END IF;inner logic केवल तब execute करता है जब condition TRUE evaluate हो।एक minor warning flag set करने जैसी optional कार्रवाइयाँ लेना।
Binary ChoiceIF ... THEN ... ELSE ... END IF;TRUE होने पर path A चलाता है; FALSE या NULL होने पर path B पर गिरता है।Pass/Fail या Paid/Unpaid जैसे yes/no scenarios सँभालना।
Multi-Tier SlabsIF ... THEN ... ELSIF ... ELSE ... END IF;कई expressions को ऊपर से नीचे क्रमिक रूप से evaluate करता है।tiered pricing systems या academic grade calculators बनाना।
Value MatchingCASE ... WHEN ... THEN ... END CASE;एक अकेले expression को fixed target options के ख़िलाफ़ तुलना करता है।exact code choices जाँचते समय लंबी ELSIF chains की जगह लेना।

Practical

एक Multi-Tier Library Fine Calculator बनाना

-- An anonymous block to determine per-day fine rates and account lockdowns
DECLARE
  v_overdue_days NUMBER := 12;
  v_fine_per_day NUMBER;
  v_total_fine   NUMBER;
  v_card_status  VARCHAR2(20);
BEGIN
  -- Multi-tier structural evaluation
  IF v_overdue_days <= 5 THEN
    v_fine_per_day := 2;
    v_card_status  := 'Active';
  ELSIF v_overdue_days <= 10 THEN
    v_fine_per_day := 5;
    v_card_status  := 'Active';
  ELSE
    v_fine_per_day := 10;
    v_card_status  := 'Suspended';
  END IF;
  
  -- Final mathematical calculation
  v_total_fine := v_overdue_days * v_fine_per_day;
  
  DBMS_OUTPUT.PUT_LINE('Account Status: ' || v_card_status);
  DBMS_OUTPUT.PUT_LINE('Total Fine Payable: Rs. ' || v_total_fine);
END;
/

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

Follow along

एक Conditional Branch के पर्दे के पीछे

  1. 1. Condition Trigger engine सबसे ऊपर की condition expression (v_overdue_days <= 5) का आकलन करता है। चूँकि 12, 5 से बड़ा है, यह FALSE evaluate होती है।
  2. 2. Sequential Drop engine पहला block bypass करता है और अगला operational gate जाँचता है: ELSIF (v_overdue_days <= 10)। यह भी FALSE evaluate होती है।
  3. 3. Default Catchall सारी सूचीबद्ध conditions ख़त्म कर लेने के बाद, compiler सीधे ELSE chamber में गिरता है, suspension और Rs. 10 assignment variables execute करते हुए।
  4. 4. Route Exit compiler END IF; marker से टकराता है, branching ecosystem को तुरंत बंद करता है और बचे standard equations को line में नीचे execute करने के लिए आगे बढ़ता है।

Quiz

एक exam सवाल आपसे एक multi-conditional check block लिखने को कहता है। alternative conditional branches के लिए Oracle PL/SQL में कौन सी keyword spelling सफलतापूर्वक compile होगी?

  1. ELSEIF
  2. ELS_IF
  3. ELSIF
  4. ELSE IF
Show the answer

ELSIF

यह एक परम जाल है जो external university examiners students को पकड़ने के लिए इस्तेमाल करना पसंद करते हैं! अधिकांश programming languages के उलट जो 'else if' या 'elseif' लिखती हैं, Oracle PL/SQL सख़्ती से compressed keyword 'ELSIF' लागू करता है ('ELSE' में 'E' छोड़ते हुए)। कोई भी अन्य spelling एक तुरंत syntax failure trigger करती है।

Watch out

NULL Conditions का Silent ख़तरा

PL/SQL में, अगर एक condition एक uninitialized variable से टकराती है (जो NULL पर default होता है), यह crash नहीं होती। बजाय इसके, logical comparison एक neutral state में resolve होती है जो न TRUE है न FALSE। Oracle इसे एक failure के रूप में treat करता है और block को पार करके फिसल जाता है। अगर आप IS NULL इस्तेमाल करके NULL states के लिए स्पष्ट रूप से filter नहीं करते, आपके records सीधे default ELSE block में गिरेंगे, जो विशाल logical calculation errors पैदा कर सकता है!

Think first

Architectural Decision Test

अगर आपको जाँचना है कि क्या एक student 'BCA' department से संबंधित है और जाँचना है कि क्या उनका membership year '3rd Year' है ताकि एक graduation fee discount दें, आपको एक अकेला CASE statement इस्तेमाल करना चाहिए या एक Nested IF structure? tap करने से पहले multi-variable testing के बारे में सोचिए।

Show the answer

यहाँ एक Nested IF structure बहुत बेहतर है! CASE statements एक अकेले variable को static, discrete values की एक list के ख़िलाफ़ मिलाने में उत्कृष्ट हैं (जैसे जाँचना कि क्या Department 'BCA', 'BBA', या 'BTech' है)। जब आपको एक साथ कई पूरी तरह अलग variables में अलग, जटिल logical combinations evaluate करने हों, एक 'IF' statement को दूसरे के अंदर nest करना साफ़ और सुरक्षित control logic देता है।

Theory

Lab Exam Execution रणनीति

terminal laboratory examinations के दौरान PL/SQL code लिखते समय, मेल खाते semi-colons कभी मत भूलिए। जबकि IF, THEN, और ELSE standalone clauses हैं और punctuation नहीं लेते, termination block को सख़्ती से एक terminating semi-colon चाहिए जो बिल्कुल END IF; लिखा हो। इस छोटे character को छोड़ना पूरे Oracle compiler parser को बिगाड़ देगा और एक वरना perfect script बर्बाद कर देगा।

Summary

Key takeaways

  • Conditional blocks boolean validation rules के आधार पर ख़ास program logic अलग और execute करते हैं।
  • किसी भी decision loop structure के लिए ज़रूरी closing marker एक स्पष्ट 'END IF;' है।
  • सीधी compilation failures रोकने के लिए अनोखी keyword spelling 'ELSIF' का ध्यान रखिए।
  • CASE statements single-variable matches के लिए लंबी ELSIF chains का एक साफ़, सुंदर विकल्प देते हैं।
  • Uninitialized variables NULL पर resolve होते हैं, comparisons को चुपचाप विफल करते और सीधे logic path में गिराते हुए।
  • Memory hook: अगर यह मेल खाए, THEN मारो; अगर आपको एक और check चाहिए, इसे ELSIF spell करो; route को END IF से ख़त्म करो!

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

Conditional Statements: IF-THEN, IF-ELSE, multiple conditions, nested IF, CASE · Concepts of Relational Database Management Systems · Gri-Learn