Theory
जब critical errors हों तो एक route चुनना
कल्पना कीजिए एक customer आधी रात TicketDesk पर एक नया ticket log करता है। अगर priority Critical है, आपको तुरंत एक senior manager को text करना होगा। अगर priority High है, एक email notification भेजना काफ़ी है। अगर यह Low है, आप इसे सुबह तक बस database queue में छोड़ सकते हैं। Standard SQL हर एक row को एक समान update करता है, पर असल ज़िंदगी में फ़ैसले लेने की ज़रूरत होती है। आपका database code data को dynamically कैसे देखे और कई options में से बिल्कुल एक operational path कैसे चुने?
Theory
Railway Track Switch
एक basic SQL statement को एक सीधी train track की तरह सोचिए जो बिना रुके एक station से दूसरे तक चलती है। हर row बिल्कुल एक ही track पर चलती है। PL/SQL में conditional control एक railway track switch जैसा है। जैसे train पास आती है, एक sensor इसका destination card जाँचता है। अगर card कहता है Express, switch बाएँ track की ओर पलटता है। अगर यह कहता है Local, switch दाएँ रहता है। data ख़ुद तय करता है कि system कौन सा route ले।
Theory
Oracle PL/SQL में Conditional Statements
Oracle dialect में, conditional statements आपको runtime values के आधार पर program execution flow नियंत्रित करने देते हैं। code को आँख मूँदकर line-दर-line execute करने के बजाय, engine एक तार्किक condition evaluate करता है जिसका परिणाम true, false, या null होता है। PL/SQL निर्णय लेने के लिए दो मुख्य structural constructs देता है: IF statement family (IF-THEN, IF-THEN-ELSE, और IF-THEN-ELSIF समेत) और CASE statement। ये constructs आपको multi-path branches साफ़-सुथरे सँभालने देते हैं।
At a glance
Oracle procedural code के भीतर decision control options की तुलना
| Construct Type | Best Use Case | Key Structural Keyword |
|---|---|---|
| IF-THEN | code का एक block केवल तब execute करना जब एक अकेली condition पूरी हो | THEN |
| IF-THEN-ELSE | दो परस्पर अनन्य वैकल्पिक रास्तों के बीच चुनना | ELSE |
| IF-THEN-ELSIF | गहरी nesting बिना कई क्रमिक conditions जाँचना | ELSIF |
| CASE Statement | एक expression को कई ख़ास असतत values से match करना | WHEN |
Practical
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 की मध्यवर्ती branches में इस्तेमाल multi-condition keyword की वर्तनी ध्यान से देखिए। कौन सा option सही syntax दर्शाता है?
- ELSEIF
- ELSIF
- ELSE IF
- IFELSE
Show the answer
ELSIF
Oracle PL/SQL explicit keyword ELSIF इस्तेमाल करता है S के बाद एक E बिना और एक अकेले शब्द के रूप में लिखा। आम ग़लतियों में इसे ELSEIF लिखना या ELSE IF जैसे दो शब्दों में बाँटना शामिल है, दोनों जो Oracle database environments में एक तुरंत compilation syntax failure trigger करते हैं।
Think first
Mental Challenge: Value Matching के लिए CASE इस्तेमाल करना
मान लीजिए आप status values: 'Open', 'In Progress', या 'Closed' के आधार पर labels print करने के लिए एक IF-THEN-ELSIF structure को एक सरल CASE statement से बदलना चाहते हैं। tap करने से पहले आप अपने मन में CASE statement कैसे बिछाएँगे?
Show the answer
आप CASE selector construct इस्तेमाल करेंगे:
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;
ध्यान दीजिए कि एक regular SQL query CASE expression के उलट, एक procedural PL/SQL CASE statement END CASE; और एक पिछले semicolon के साथ समाप्त होता है।
Watch out
आम ELSIF और END IF वर्तनी Errors
university laboratory practical exams के दौरान भारतीय BCA students द्वारा की गई सबसे बार-बार होने वाली ग़लती keywords की वर्तनी ग़लत करना है। एक 'E' के साथ ELSEIF लिखना Oracle को आपका पूरा block अस्वीकार करने पर मजबूर करेगा। एक और classic जाल END IF; के बाद पिछला semicolon छोड़ना या इसे एक अकेले शब्द ENDIF के रूप में लिखना है। हर अलग IF construct को एक explicit END IF; spacing के साथ एक समाप्त करते semicolon चाहिए ताकि parser को बताए कि conditional zone ख़त्म हो गया।
Theory
असली दुनिया के Priority Escalation Systems
product integrity operations या enterprise ticket routing tools जैसे बड़े tech environments में, यह बिल्कुल conditional logic रोज़ लाखों बार चलता है। जब एक ticket SLA limits पार करता है, conditional rules तुरंत variables update करते और assignments escalate करते हैं। आप इस बुनियादी decision structure पर अगले semester अपने Sem 3 SQLite mobile database programming course में निर्माण करेंगे, जहाँ आप smartphone local sync routines के अंदर logical branching इस्तेमाल करेंगे।
Summary
Key takeaways
- Conditional statements evaluate किए तार्किक logic के आधार पर एक ख़ास operational path dynamically चुनते हैं।
- बुनियादी Oracle structures में IF-THEN family और असतत CASE statement branches शामिल हैं।
- keyword की वर्तनी पर ध्यान दीजिए: यह हमेशा character E बिना ELSIF के रूप में लिखा जाता है।
- हर procedural IF block container को औपचारिक रूप से दो शब्दों END IF; statement इस्तेमाल करके समाप्त होना होगा।
- जब एक expression को scalar options से match करते हैं तो CASE structures साफ़ code के लिए उत्कृष्ट विकल्प हैं।
- Memory hook: IF से जाँचो, ELSIF से paths जोड़ो, ELSE से fallback करो, और END IF से बंद करो!