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

Conditional statements એ નિર્ણય લેવાની ચોકીઓ છે જે તમારા code ને એક ચોક્કસ નિયમ સાચો પડે છે કે ખોટો એના આધારે અલગ અલગ execution ના રસ્તે દોરે છે.

12 min read · 11 cards · 2 checks

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


Theory

Fine-Slab નો કોયડો

કલ્પો કે એક student CampusLib counter પર મોડું પુસ્તક પાછું આપે છે. Database program તરીકે, તમે બધા પાસેથી સપાટ 20 રૂપિયા દંડ લઈ શકતા નથી. જો પુસ્તક 1 થી 5 દિવસ મોડું હોય, fine રોજના Rs. 2 છે. જો એ 6 થી 10 દિવસ મોડું હોય, એ કૂદીને રોજના Rs. 5 થાય છે. જો એ 10 દિવસ વટાવે, એ રોજના Rs. 10 સુધી ઊછળે છે, અને એમનું library card તરત સ્થગિત કરવું પડે. તો આપણે આપણા database engine ને મોડા દિવસોની બદલાતી સંખ્યા જોઈને સમજદારીથી સાચો દંડ પસંદ કરવાનું કેવી રીતે શીખવીએ?

Theory

Railway Track બદલનાર

Standard SQL queries ને એક જ સીધા પાટા પર દોડતી bullet train જેવી વિચારો, એ કોઈ પસંદગી કર્યા વગર data ના દરેક block ને ક્રમશઃ અડે છે. PL/SQL conditional statements એક ધમધમતા railway junction પર track switcher ની જેમ કામ કરે છે. એક ચોક્કસ signal ના નિયમના આધારે (દા.ત. train Express છે કે local?), પાટો dynamically ખસે છે, train ને એક ચોક્કસ માર્ગે મોકલતાં જ્યારે વૈકલ્પિક રસ્તાઓ સંપૂર્ણપણે અવગણતાં.

Theory

નિર્ણય લેવાની Syntax

ઔપચારિક રીતે, PL/SQL તાર્કિક શાખા પાડતાં માળખાં વાપરીને નિર્ણયો સંભાળે છે. C, C++, કે Java થી વિપરીત, જે વાંકા કૌંસ {} અને else if જેવા keywords વાપરે છે, Oracle PL/SQL THEN, ELSIF જેવા સ્પષ્ટ, ચોખ્ખા keywords પર આધાર રાખે છે, અને એક નિર્ણાયક END IF; statement વાપરીને આખું condition નું માળખું સમાપ્ત કરે છે. દરેક conditional તપાસ એક expression ને TRUE, FALSE, કે NULL તરીકે આંકે છે, અને એ પ્રમાણે code નું execution વાળે છે.

At a glance

Oracle PL/SQL માં ઉપલબ્ધ મુખ્ય conditional માળખાં

માળખાનો પ્રકારKeyword Layoutમૂલ્યાંકનનો નિયમશ્રેષ્ઠ ઉપયોગ
Single ChoiceIF ... THEN ... END IF;અંદરની logic માત્ર ત્યારે ચલાવે છે જ્યારે condition TRUE આંકાય.એક નાનો warning flag ગોઠવવા જેવી વૈકલ્પિક ક્રિયાઓ લેવી.
Binary ChoiceIF ... THEN ... ELSE ... END IF;TRUE હોય તો રસ્તો A ચલાવે છે; FALSE કે NULL હોય તો રસ્તા B પર પડે છે.Pass/Fail કે Paid/Unpaid જેવાં હા/ના પરિદૃશ્યો સંભાળવાં.
Multi-Tier SlabsIF ... THEN ... ELSIF ... ELSE ... END IF;અનેક expressions ને ઉપરથી નીચે ક્રમશઃ આંકે છે.સ્તરવાળી pricing systems કે academic grade calculators બનાવવાં.
Value MatchingCASE ... WHEN ... THEN ... END CASE;એક જ expression ને નિશ્ચિત લક્ષ્ય વિકલ્પો સામે સરખાવે છે.ચોક્કસ code પસંદગીઓ તપાસતી વખતે લાંબી ELSIF સાંકળો બદલવી.

Practical

Building a 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 શાખાના પડદા પાછળ

  1. 1. Condition નો Trigger Engine સૌથી ઉપરની condition expression (v_overdue_days <= 5) આંકે છે. કારણ કે 12 એ 5 થી મોટું છે, આ FALSE આંકાય છે.
  2. 2. ક્રમશઃ ઉતરાણ Engine પહેલો block છોડી દે છે અને આગળનો દરવાજો તપાસે છે: ELSIF (v_overdue_days <= 10). આ પણ FALSE આંકાય છે.
  3. 3. Default પકડનાર બધી યાદી કરેલી conditions ખૂટી જતાં, compiler સીધો ELSE ખંડમાં ઊતરે છે, સ્થગિતતા અને Rs. 10 ની સોંપણીના variables ચલાવતાં.
  4. 4. રસ્તામાંથી બહાર Compiler END IF; નિશાનને અડે છે, તરત શાખાની વ્યવસ્થા બંધ કરે છે અને આગળ બાકીનાં standard સમીકરણો ચલાવવા વધે છે.

Quiz

એક exam પ્રશ્ન તમને એક multi-conditional check block લખવાનું કહે છે. વૈકલ્પિક conditional શાખાઓ માટે Oracle PL/SQL માં કઈ keyword ની જોડણી સફળતાપૂર્વક compile થશે?

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

ELSIF

આ એક પાકો ફાંદો છે જે બહારના university examiners students ને પકડવા વાપરવાનું પસંદ કરે છે! 'else if' કે 'elseif' લખતી મોટા ભાગની programming languages થી વિપરીત, Oracle PL/SQL સખ્તાઈથી સંકોચેલો keyword 'ELSIF' લાગુ કરે છે ('ELSE' માંનો 'E' છોડી દેતાં). બીજી કોઈ પણ જોડણી તરત syntax નિષ્ફળતા ઊભી કરે છે.

Watch out

NULL Conditions નું ચૂપચાપ જોખમ

PL/SQL માં, જો એક condition ને initialize ન થયેલો variable મળે (જે NULL પર default થાય છે), એ crash થતું નથી. એને બદલે, તાર્કિક સરખામણી એક તટસ્થ સ્થિતિમાં ઊકલે છે જે નથી TRUE કે નથી FALSE. Oracle આને એક નિષ્ફળતા ગણે છે અને block ને છોડીને આગળ સરકે છે. જો તમે IS NULL વાપરીને NULL સ્થિતિઓ સ્પષ્ટપણે filter ન કરો, તમારા records સીધા default ELSE block માં પડશે, જે વિશાળ તાર્કિક ગણતરીની ભૂલો કરી શકે છે!

Think first

માળખાકીય નિર્ણયની કસોટી

જો તમારે તપાસવું હોય કે એક student 'BCA' વિભાગનો છે કે નહીં AND એમનું membership વર્ષ '3rd Year' છે કે નહીં જેથી graduation fee માં છૂટ આપી શકાય, તો તમારે એક જ CASE statement વાપરવું જોઈએ કે એક Nested IF માળખું? Tap કરતાં પહેલાં અનેક variables ની ચકાસણી વિશે વિચારો.

Show the answer

અહીં એક Nested IF માળખું ઘણું બહેતર છે! CASE statements એક જ variable ને સ્થિર, અલગ values ની યાદી સામે મેળવવામાં ઉત્તમ છે (જેમ કે Department 'BCA', 'BBA', કે 'BTech' છે કે નહીં એ તપાસવું). જ્યારે તમારે એકસાથે અનેક તદ્દન અલગ variables પર જુદાં, જટિલ તાર્કિક સંયોજનો આંકવાં હોય, ત્યારે એક 'IF' statement ને બીજાની અંદર મૂકવું સાફ અને સલામત નિયંત્રણ logic આપે છે.

Theory

Lab Exam ની Execution વ્યૂહરચના

Terminal laboratory examinations દરમિયાન PL/SQL code લખતી વખતે, મળતા અર્ધવિરામ ક્યારેય ભૂલશો નહીં. જ્યારે IF, THEN, અને ELSE સ્વતંત્ર clauses છે અને વિરામચિહ્ન લેતાં નથી, ત્યારે સમાપ્તિના block ને સખ્તાઈથી બિલકુલ END IF; તરીકે લખેલો સમાપ્તિનો અર્ધવિરામ જોઈએ જ. આ નાનકડો અક્ષર છોડી દેવાથી આખો Oracle compiler parser ખોરવાઈ જશે અને એક બાકી સંપૂર્ણ script બગડી જશે.

Summary

Key takeaways

  • Conditional blocks boolean ચકાસણીના નિયમોના આધારે ચોક્કસ program logic અલગ પાડીને ચલાવે છે.
  • કોઈ પણ નિર્ણય લેતા માળખાનું ફરજિયાત બંધ કરતું નિશાન એક સ્પષ્ટ 'END IF;' છે.
  • સીધી compilation નિષ્ફળતાઓ ટાળવા અનોખી keyword જોડણી 'ELSIF' પર ધ્યાન રાખો.
  • એક જ variable ના મેળ માટે CASE statements લાંબી ELSIF સાંકળોનો એક સાફ, સુઘડ વિકલ્પ આપે છે.
  • Initialize ન થયેલા variables NULL માં ઊકલે છે, જેથી સરખામણીઓ ચૂપચાપ નિષ્ફળ જાય છે અને logic ના રસ્તે સીધી નીચે ઊતરી પડે છે.
  • Memory hook: મેળ પડે તો THEN પર જાઓ; બીજી તપાસ જોઈએ તો એને ELSIF લખો; રસ્તો 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