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;
/Quiz
એક Oracle PL/SQL IF block ની વચલી શાખાઓમાં વપરાતા multi-condition keyword ની જોડણી ધ્યાનથી જુઓ. કયો વિકલ્પ સાચી syntax દર્શાવે છે?
- ELSEIF
- ELSIF
- ELSE IF
- 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 થી બંધ કરો!