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

Conditional statements તમારા database ના programs ને data ને dynamically તપાસવા અને ચાલતાં ચાલતાં અલગ execution ના રસ્તા પસંદ કરવા દે છે.

10 min read · 10 cards · 2 checks

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


Theory

Critical Errors થાય ત્યારે રસ્તો પસંદ કરવો

કલ્પો કે એક ગ્રાહક મધરાતે TicketDesk પર એક નવું ticket નોંધાવે છે. જો priority Critical હોય, તમારે તરત એક senior manager ને message કરવો પડે. જો priority High હોય, એક email ની સૂચના મોકલવી પૂરતી છે. જો એ Low હોય, તમે એને સવાર સુધી database ની કતારમાં જ છોડી શકો. Standard SQL દરેકે દરેક હરોળ એકસરખી રીતે update કરે છે, પણ વાસ્તવિક જીવનમાં પસંદગીઓ કરવી પડે છે. તો તમારો database નો code data ને dynamically જોઈને અનેક વિકલ્પોમાંથી બિલકુલ એક કામગીરીનો રસ્તો કેવી રીતે પસંદ કરે?

Theory

Railway ના પાટાનો Switch

એક પાયાના SQL statement ને એક સીધા train ના પાટા જેવો વિચારો જે એક station થી બીજા સુધી અટક્યા વગર દોડે છે. દરેક હરોળ બિલકુલ એ જ પાટે મુસાફરી કરે છે. PL/SQL માં conditional નિયંત્રણ એ railway ના પાટાના switch જેવું છે. જેમ train નજીક આવે, એક sensor એનું ગંતવ્યનું card તપાસે છે. જો card 'Express' કહે, switch ડાબા પાટા તરફ ફરે છે. જો એ 'Local' કહે, switch જમણી બાજુ રહે છે. Data પોતે જ નક્કી કરે છે કે system કયો રસ્તો લે.

Theory

Oracle PL/SQL માં Conditional Statements

Oracle ના dialect માં, conditional statements તમને runtime ની values ના આધારે program ના execution નો પ્રવાહ નિયંત્રિત કરવા દે છે. Code ને આંધળી રીતે લીટી-દર-લીટી ચલાવવાને બદલે, engine એક તાર્કિક condition આંકે છે જેનું પરિણામ true, false, કે null આવે છે. PL/SQL નિર્ણય લેવા માટે બે મુખ્ય સંરચનાત્મક રચનાઓ આપે છે: IF statement નું કુટુંબ (IF-THEN, IF-THEN-ELSE, અને IF-THEN-ELSIF સહિત) અને CASE statement. આ રચનાઓ તમને અનેક રસ્તાની શાખાઓ સાફ રીતે સંભાળવા દે છે.

At a glance

Oracle ના procedural code ની અંદર નિર્ણય નિયંત્રણના વિકલ્પોની સરખામણી

રચનાનો પ્રકારશ્રેષ્ઠ Use Caseમુખ્ય સંરચનાત્મક Keyword
IF-THENમાત્ર એક જ condition પૂરી થાય ત્યારે code નો એક block ચલાવવોTHEN
IF-THEN-ELSEબે પરસ્પર વિરોધી વૈકલ્પિક રસ્તાઓ વચ્ચે પસંદગી કરવીELSE
IF-THEN-ELSIFઊંડા nesting વગર અનેક ક્રમિક conditions ચકાસવીELSIF
CASE Statementએક expression ને ઘણી ચોક્કસ અલગ values સામે મેળવવુંWHEN

Practical

Implementing Priority Routing Logic

-- Enable console printing in Oracle SQL*Plus
SET SERVEROUTPUT ON;

DECLARE
  v_priority VARCHAR2(20) := 'High';
  v_action VARCHAR2(100);
BEGIN
  -- Evaluate conditions sequentially using ELSIF
  IF v_priority = 'Critical' THEN
    v_action := 'Send SMS alert to Senior Engineer';
  ELSIF v_priority = 'High' THEN
    v_action := 'Assign to Senior Agent and email group';
  ELSE
    v_action := 'Route to general helpdesk queue';
  END IF;
  
  DBMS_OUTPUT.PUT_LINE('Action taken: ' || v_action);
END;
/

Copy કરીને Oracle FreeSQL ખોલો
Oracle FreeSQL, Oracle SQL નું મફત online editor છે. Code પહેલા copy થઈ જાય છે: તેને ત્યાં paste કરીને Run કરો.

Quiz

એક Oracle PL/SQL IF block ની વચલી શાખાઓમાં વપરાતા multi-condition keyword ની જોડણી ધ્યાનથી જુઓ. કયો વિકલ્પ સાચી syntax દર્શાવે છે?

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

ELSIF

Oracle PL/SQL S પછી E વગરનો અને એક જ શબ્દ તરીકે લખાયેલો સ્પષ્ટ keyword ELSIF વાપરે છે. સામાન્ય ભૂલોમાં એને ELSEIF લખવું કે ELSE IF જેવા બે શબ્દોમાં વહેંચવું શામેલ છે, જે બંને Oracle database ના વાતાવરણમાં તરત compilation ની syntax નિષ્ફળતા ઊભી કરે છે.

Think first

માનસિક પડકાર: Value મેળવવા CASE વાપરવું

ધારો કે તમારે status ની values, 'Open', 'In Progress', કે 'Closed' ના આધારે labels છાપવા એક IF-THEN-ELSIF માળખાને એક સાદા CASE statement થી બદલવું છે. Tap કરતાં પહેલાં તમે મનમાં CASE statement કેવી રીતે ગોઠવશો?

Show the answer

તમે CASE selector ની રચના વાપરશો:

CASE v_status

WHEN 'Open' THEN DBMS_OUTPUT.PUT_LINE('New ticket');

WHEN 'In Progress' THEN DBMS_OUTPUT.PUT_LINE('Work started');

WHEN 'Closed' THEN DBMS_OUTPUT.PUT_LINE('Job completed');

ELSE DBMS_OUTPUT.PUT_LINE('Unknown status');

END CASE;

નોંધો કે એક સામાન્ય SQL query ના CASE expression થી વિપરીત, એક procedural PL/SQL CASE statement END CASE; અને પાછળના અર્ધવિરામ સાથે સમાપ્ત થાય છે.

Watch out

સામાન્ય ELSIF અને END IF ની જોડણીની ભૂલો

University ની laboratory ની practical પરીક્ષાઓ દરમિયાન ભારતીય BCA students સૌથી વારંવાર જે ભૂલ કરે છે એ છે keywords ની ખોટી જોડણી. 'E' સાથે ELSEIF લખવાથી Oracle તમારો આખો block નકારી કાઢશે. બીજો classic ફાંદો છે END IF; પછીનો પાછળનો અર્ધવિરામ છોડી દેવો કે એને એક જ શબ્દ ENDIF તરીકે લખવો. દરેક અલગ IF રચનાને parser ને જણાવવા કે conditional વિસ્તાર પૂરો થયો, સમાપ્તિના અર્ધવિરામ સાથે એક સ્પષ્ટ END IF; ની જગ્યા જોઈએ.

Theory

વાસ્તવિક દુનિયાની Priority Escalation Systems

Product integrity ની કામગીરી કે enterprise ticket routing નાં ઓજારો જેવાં મોટાં tech વાતાવરણોમાં, બિલકુલ આ જ conditional logic રોજ લાખો વાર ચાલે છે. જ્યારે એક ticket SLA ની મર્યાદા વટાવે, conditional નિયમો તરત variables update કરે છે અને સોંપણીઓ ઉપર ચઢાવે છે. તમે આગલા semester માં તમારા Sem 3 ના SQLite mobile database programming ના course માં આ પાયાના નિર્ણયના માળખા પર બાંધશો, જ્યાં તમે smartphone ની સ્થાનિક sync ની routines ની અંદર તાર્કિક શાખાઓ વાપરશો.

Summary

Key takeaways

  • Conditional statements આંકેલી તાર્કિક logic ના આધારે એક ચોક્કસ કામગીરીનો રસ્તો dynamically પસંદ કરે છે.
  • પાયાનાં Oracle નાં માળખાંમાં IF-THEN નું કુટુંબ અને અલગ CASE statement ની શાખાઓ શામેલ છે.
  • Keyword ની જોડણી પર ધ્યાન રાખો: એ હંમેશા E અક્ષર વગર ELSIF તરીકે લખાય છે.
  • દરેક procedural IF block ના ડબ્બાએ સત્તાવાર રીતે બે શબ્દોના END IF; statement વાપરીને સમાપ્ત થવું જ પડે.
  • એક expression ને scalar વિકલ્પો સામે મેળવતી વખતે સાફ code માટે CASE માળખાં ઉત્તમ વિકલ્પો છે.
  • Memory hook: IF થી તપાસો, ELSIF થી રસ્તા ઉમેરો, ELSE થી પાછળ પડો, અને 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 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 · Mastering SQL - PL/SQL (SEC-02 option A) · Gri-Learn