Oracle PL / SQL यदि यह ELSE स्टेटमेंट है: ELSIF, NESTED-IF

विषय - सूची:

Anonim

निर्णय लेने वाले कथन क्या हैं?

निर्णय लेने वाले कथन वे होते हैं जो शर्तों के आधार पर SQL कथनों के प्रवाह-नियंत्रण का निर्णय करेंगे। यह प्रोग्रामर को किसी विशेष कोड को निष्पादित (आरेख 1) को रोकने या स्थिति के आधार पर एक वांछित कोड चुनने से बेहतर नियंत्रण देता है (आरेख 2)। नीचे "निर्णय लेने का विवरण" का सचित्र प्रतिनिधित्व है।

निर्णय लेना कथन आरेख

निर्णय लेने के प्रकार:

ओरेकल निम्नलिखित प्रकार के निर्णय लेने के बयान प्रदान करता है।

  • तो अगर
  • अगर तब या
  • इफ-थेन-ईएलएसआईएफ
  • नेस्ट-अगर
  • मामला
  • खोजा हुआ मामला

इस ट्यूटोरियल में, आप सीखेंगे-

  • निर्णय लेने का निर्णय परिचय
  • इफ-थेन स्टेटमेंट
  • IF-THEN-ELSE स्टेटमेंट
  • IF-THEN-ELSIF स्टेटमेंट
  • NESTED-IF कथन

इफ-थेन स्टेटमेंट

IF-THEN स्टेटमेंट का उपयोग मुख्य रूप से कोड के किसी विशेष खंड को निष्पादित करने के लिए किया जाता है, जब स्थिति संतुष्ट हो।

हालत बूलियन (सच / गलत) उपज चाहिए। यह एक मूल सशर्त विवरण है जो ORACLE को पूर्व-निर्धारित शर्तों के आधार पर कोड के किसी विशेष टुकड़े को निष्पादित करने / छोड़ने की अनुमति देगा।

IF कथन के लिए सिंटैक्स:

IF THEN-executed only if the condition returns TRUEEND if;
  • उपरोक्त सिंटैक्स में, कीवर्ड 'IF' एक शर्त का पालन करेगा जो 'TRUE' / 'FALSE' का मूल्यांकन करता है।
  • नियंत्रण को तभी निष्पादित करेगा जब स्थिति वापस आती है
  • स्थिति के मूल्यांकन में तब, SQL <कार्रवाई_ब्लॉक> को छोड़ देगा, और यह 'END IF' ब्लॉक के आगे कोड निष्पादित करना शुरू कर देगा।

नोट: जब भी 'NULL' के लिए स्थिति का मूल्यांकन किया जाता है, तो SQL 'NULL' को 'FALSE' के रूप में मानेगा।

उदाहरण 1 : इस उदाहरण में, हम एक संदेश को प्रिंट करने जा रहे हैं, जब संख्या 100 से अधिक है। उसके लिए, हम निम्नलिखित कोड निष्पादित करेंगे

एक संदेश को मुद्रित करने के लिए जब किसी संख्या का मान 100 से अधिक होता है, तो हम निम्नलिखित कोड निष्पादित करते हैं।

DECLAREa NUMBER :=10;BEGINdbms_output.put_line(‘Program started.' );IF( a> 100 ) THENdbms_output.put_line('a is greater than 100');END IF;dbms_output.put_line(‘Program completed.');END;/

कोड स्पष्टीकरण:

  • कोड लाइन 2: चर 'a' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '10' मान के साथ आरंभ करना।
  • कोड लाइन 4: "प्रोग्राम शुरू हुआ" कथन को प्रिंट करना।
  • कोड पंक्ति 5: स्थिति की जाँच करना, क्या चर 'a' '100' से बड़ा है।
  • कोड लाइन 6: यदि 'a' '100' से अधिक है, तो "a a 100 से अधिक है" मुद्रित किया जाएगा। यदि 'क' 100 से कम या उसके बराबर है, तो स्थिति विफल हो जाती है, इसलिए उपरोक्त मुद्रण विवरण को नजरअंदाज कर दिया गया।
  • कोड लाइन 8: "प्रोग्राम पूरा हुआ" कथन को प्रिंट करना।

कोड आउटपुट:

Program started.Program completed. 

उदाहरण 2: इस उदाहरण में, हम एक संदेश मुद्रित करने जा रहे हैं यदि एक दिया वर्णमाला अंग्रेजी स्वरों (ए, ई, आई, ओ, यू) में मौजूद है।

किसी संदेश को मुद्रित करने के लिए जब दिए गए वर्ण स्वर हैं, तो हम निम्नलिखित कोड निष्पादित करते हैं।

DECLAREa CHAR(1) :=’u’;BEGINIF UPPER(a) in ('A’,'E','I','0','U' ) THENdbms_output.put_line(‘The character is in English Vowels');END IF;END;/

कोड स्पष्टीकरण:

  • कोड लाइन 2: चर 'a' को 'CHAR' के आकार के 'डेटा' प्रकार के रूप में घोषित करना और इसे "u" मान के साथ प्रारंभ करना।
  • कोड लाइन 4: स्थिति की जाँच, क्या चर 'ए' सूची में मौजूद है ('ए', 'ई', 'आई', 'ओ', 'यू')।
  • तुलनात्मक रूप से असंवेदनशील होने के लिए तुलना करने से पहले 'a' के मान को अपरकेस में बदल दिया गया है।
  • कोड लाइन 5: यदि सूची में 'ए' मौजूद है, तो "वर्ण अंग्रेजी स्वर में है" कथन मुद्रित किया जाएगा। यदि स्थिति विफल हो गई, तो यह प्रोग्राम कोई आउटपुट नहीं देगा, क्योंकि IF-THEN ब्लॉक के बाहर हमने कोई प्रिंटिंग स्टेटमेंट जारी नहीं किया है।

कोड आउटपुट:

The character is in English Vowels

IF-THEN-ELSE स्टेटमेंट

  • IF-THEN-ELSE स्टेटमेंट मुख्य रूप से स्थिति के आधार पर दो विकल्पों के बीच चयन करने के लिए उपयोग किया जाता है।
  • नीचे IF-THEN-ELSE स्टेटमेंट का सिंटैक्स प्रतिनिधित्व है।

IF-THEN-ELSE कथन के लिए सिंटैक्स:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • उपरोक्त सिंटैक्स में, कीवर्ड 'IF' एक शर्त का पालन करेगा जो 'TRUE' / 'FALSE' का मूल्यांकन करता है।
  • नियंत्रण को तभी निष्पादित करेगा जब स्थिति वापस आएगी
  • स्थिति के मूल्यांकन में तब, SQL निष्पादित करेगा।
  • किसी भी मामले में, दो कार्रवाई ब्लॉकों में से एक को निष्पादित किया जाएगा।

नोट: जब भी स्थिति 'NULL' का मूल्यांकन करती है, तो SQL 'NULL' को 'FALSE' मान लेगा।

उदाहरण 1 : इस उदाहरण में, हम संदेश को प्रिंट करने जा रहे हैं कि क्या दी गई संख्या विषम है या नहीं।

DECLAREa NUMBER:=11;BEGINdbms_output.put_line (‘Program started');IF( mod(a,2)=0) THENdbms_output.put_line('a is even number' );ELSEdbms_output.put_line('a is odd number1);END IF;dbms_output.put_line (‘Program completed.’);END;/

कोड स्पष्टीकरण:

  • कोड लाइन 2: चर 'a' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '11' मान के साथ आरंभ करना।
  • कोड लाइन 4: "प्रोग्राम शुरू हुआ" कथन को प्रिंट करना।
  • कोड लाइन 5: इस स्थिति की जाँच करना, कि क्या वेरिएबल 'a' बाय '2' 0 है।
  • कोड लाइन 6: यदि '0' है, तो "a a सम संख्या है" मुद्रित किया जाएगा।
  • कोड लाइन 7: यदि मापांक मान '0' के बराबर नहीं है, तो स्थिति लौटती है, इसलिए "एक सम विषम संख्या" संदेश मुद्रित होगा।
  • कोड लाइन 10: "प्रोग्राम पूरा हुआ" स्टेटमेंट को प्रिंट करना

कोड आउटपुट:

Program started.a is odd numberProgram completed. 

IF-THEN-ELSIF स्टेटमेंट

  • IF-THEN-ELSIF स्टेटमेंट मुख्य रूप से उपयोग किया जाता है जहां एक विकल्प को विकल्पों के एक सेट से चुना जाना चाहिए, जहां प्रत्येक विकल्प की अपनी शर्तों को संतुष्ट करना है।
  • लौटने वाली पहली शर्तों को निष्पादित किया जाएगा, और शेष शर्तों को छोड़ दिया जाएगा।
  • IF-THEN-ELSIF स्टेटमेंट में 'ELSE' ब्लॉक हो सकता है। यदि शर्तों में से कोई भी संतुष्ट नहीं है तो इस 'ईएलएसई' ब्लॉक को क्रियान्वित किया जाएगा।

नोट : इस सशर्त विवरण में ELSE ब्लॉक वैकल्पिक है। यदि कोई ईएलएसई ब्लॉक नहीं है, और कोई भी शर्त संतुष्ट नहीं है, तो नियंत्रक सभी कार्रवाई ब्लॉक को छोड़ देगा और कोड के शेष भाग को निष्पादित करना शुरू कर देगा।

IF-THEN-ELSIF स्टेटमेंट के लिए सिंटैक्स:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • उपरोक्त सिंटैक्स में, नियंत्रण को तभी निष्पादित करेगा जब कंडीशन 1 लौटाएगी
  • यदि कंडीशन 1 संतुष्ट नहीं है, तो नियंत्रक कंडिशन 2 की जांच करेगा।
  • नियंत्रक निम्नलिखित दो मामलों में IF-बयान से बाहर निकल जाएगा।
    • जब नियंत्रक को कोई भी स्थिति मिली जो देता है। इस स्थिति में, संबंधित एक्शन_ब्लॉक निष्पादित किया जाएगा और नियंत्रक इस IF- स्टेटमेंट ब्लॉक से बाहर निकल जाएगा और शेष कोड निष्पादित करना शुरू कर देगा।
    • जब कोई भी शर्तों से संतुष्ट नहीं होता है, तो तत्कालीन नियंत्रक ईएलएसई ब्लॉक को निष्पादित करेगा यदि मौजूद है, तो आईएफ-स्टेटमेंट से बाहर निकल जाएगा।

नोट: जब भी स्थिति 'NULL' का मूल्यांकन करती है, तो SQL 'NULL' को 'FALSE' मान लेगा।

उदाहरण 1: ईएलएसई ब्लॉक के बिना

इस उदाहरण में, हम बिना किसी शर्त के दिए गए अंकों के आधार पर ग्रेड को प्रिंट करने जा रहे हैं (मार्क> = 70 ग्रेड ए, मार्क> = 40 और मार्क <70 ग्रेड बी, मार्क> = 35 और मार्क <40 ग्रेड सी)।

DECLAREmark NUMBER :=55;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C’);END IF;dbms_output.put_line(‘Program completed.’);END;/

कोड स्पष्टीकरण:

  • कोड लाइन 2: चर 'चिह्न' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और मूल्य '55' के साथ इसकी शुरुआत करना।
  • कोड लाइन 4: "प्रोग्राम शुरू हुआ" कथन को प्रिंट करना।
  • कोड लाइन 5: कंडिशन 1 की जाँच कर रहा है कि क्या 'निशान' 70 या उससे अधिक है।
  • कोड लाइन 7: चूंकि कंडिशन 1 फेल हो गया है, तो कंडीशन 2 '70> मार्क> = 40 'की जांच की जाती है।
  • कोड लाइन 8: condtition2 रिटर्न , इसलिए संदेश 'ग्रेड B' मुद्रित होगा।
  • कोड लाइन 12: "प्रोग्राम पूरा हुआ" बयान को प्रिंट करना।
  • इस स्थिति में, कंडिशन 3 से पहले की स्थिति 3 'चिह्न <35' को छोड़ दिया जाएगा, क्योंकि नियंत्रक को एक शर्त मिली है जो से पहले लौटती है।

कोड आउटपुट:

Program started.Grade BProgram completed.

उदाहरण 2 : ईएलएसई ब्लॉक के साथ

इस उदाहरण में, हम दिए गए अंकों के आधार पर ग्रेड को अन्य शर्त (निशान> = 70 ग्रेड ए, चिह्न> = 40 और अंक <70 ग्रेड बी, मार्क> = 35 और मार्क <40 ग्रेड सी, और) के साथ प्रिंट करने जा रहे हैं। 'नो ग्रेड')।

DECLAREmark NUMBER :=25;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C);ELSEdbms_output.put_line(‘No Grade’);END IF;dbms_output.put_line(‘Program completed.' );END;/

कोड स्पष्टीकरण:

  • कोड लाइन 2: चर 'चिह्न' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '25' मान के साथ आरंभ करना।
  • कोड लाइन 4: "प्रोग्राम शुरू हुआ" कथन को प्रिंट करना।
  • कोड लाइन 5: स्थिति 1 की जाँच करना, चाहे 'निशान' अधिक से अधिक हो या 70 के बराबर।
  • कोड लाइन 7: चूंकि कंडिशन 1 फेल हो गया है, तो कंडीशन 2 '70> मार्क> = 40 'की जांच की जाती है।
  • कोड लाइन 8: चूंकि कंडिशन 2 फेल हो गया है, तो कंडीशन 3 '40> मार्क> = 35 'की जांच की जाती है।
  • कोड लाइन 11: चूंकि सभी स्थितियां विफल हैं, इसलिए नियंत्रण अब ELSE ब्लॉक की उपस्थिति की जांच करेगा, और यह ELSE ब्लॉक से 'No ग्रेड' संदेश को प्रिंट करेगा।
  • कोड लाइन 14: "प्रोग्राम पूरा हुआ" स्टेटमेंट को प्रिंट करना।

कोड आउटपुट:

Program started.No GradeProgram completed.

NESTED-IF कथन

  • नेस्टेड-आईएफ स्टेटमेंट को मूल रूप से प्रोग्रामर को सामान्य स्टेटमेंट्स के अलावा किसी अन्य 'आईएफ' कंडीशन के के अंदर एक या एक से अधिक 'IF' कंडीशन रखने की अनुमति दी जाती है।
  • प्रत्येक 'IF' कंडीशन में एक अलग 'END IF' स्टेटमेंट होना चाहिए, जो उस विशेष के एंड-ऑफ-स्कोप को चिह्नित करता है।
  • 'IF' स्टेटमेंट उस विशेष स्थिति के लिए समापन बिंदु के रूप में निकटतम 'END IF' स्टेटमेंट पर विचार करेगा।
  • NESTED-IF के लिए सचित्र प्रतिनिधित्व चित्र के नीचे दिखाया गया है।
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
सिंटैक्स स्पष्टीकरण:
  • उपरोक्त सिंटैक्स में, बाहरी IF में इसके एक्शन ब्लॉक में एक और IF विवरण होता है।
  • शर्त 1 रिटर्न , फिर नियंत्रण <कार्रवाई_ब्लॉक 1> निष्पादित करेगा और शर्त 2 की जांच करेगा।
  • यदि कंडीशन 2 भी लौटाता है, तो को भी निष्पादित किया जाएगा।
  • कंडीशन 2 के मामले में के मूल्यांकन के बाद, SQL को छोड़ देगा।

यहां हम नेस्टेड इफ का एक उदाहरण देखने जा रहे हैं -

नेस्टेड का उदाहरण- यदि स्टेटमेंट: तीन नंबर का सबसे बड़ा

इस उदाहरण में, हम नेस्टेड-इफ स्टेटमेंट का उपयोग करके तीन सबसे बड़ी संख्याओं को प्रिंट करने जा रहे हैं। संख्या को घोषित भाग में सौंपा जाएगा, जैसा कि आप नीचे दिए गए कोड में देख सकते हैं, अर्थात नंबर = 10,15 और 20 और अधिकतम संख्या नेस्टेड-if स्टेटमेंट का उपयोग करके प्राप्त की जाएगी।

DECLAREa NUMBER :=10;b NUMBER :=15;c NUMBER :=20;BEGINdbms_output.put_line(‘Program started.' );IF( a> b)THEN/*Nested-if l */dbms_output.put_line(’Checking Nested-IF 1');IF( a> c ) THENdbms_output.put_line(‘A is greatest’);ELSEdbms_output.put_line(‘C is greatest’);END IF;ELSE/*Nested-if2 */dbms_output.put_line('Checking Nested-IF 2' );IF( b> c ) THENdbms_output.put_line(’B is greatest' );ELSEdbms_output.put_line(’C is greatest' );END IF;END IF;dbms_output.put_line(‘Program completed.’ );END;/

कोड स्पष्टीकरण:

  • कोड लाइन 2: चर 'a' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '10' मान के साथ आरंभ करना।
  • कोड पंक्ति 3: चर 'b' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '15' मान के साथ प्रारंभ करना।
  • कोड पंक्ति 4: चर 'c' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '20' के साथ आरंभ करना।
  • कोड लाइन 6: स्टेटमेंट "प्रोग्राम स्टार्ट" (लाइन 6) को प्रिंट करना।
  • कोड लाइन 7: कंडिशन 1 की जाँच करना, क्या 'a' 'b' (लाइन 7) से अधिक है।
  • कोड लाइन 10: यदि 'a' 'b' से अधिक है, तो 'nested-if 1' में स्थिति यह जांच करेगी कि 'a' 'c' (लाइन 10) से अधिक है या नहीं।
  • कोड लाइन 13: यदि फिर भी 'a' अधिक है, तो 'A सबसे बड़ी' संदेश मुद्रित किया जाएगा (पंक्ति 11)। और अगर कंडिशन 2 फेल हो जाता है, तो 'सी सबसे बड़ी है' प्रिंट हो जाएगी (लाइन 13)।
  • कोड लाइन 18: यदि स्थिति 1 सही है, तो 'नेस्टेड-इफ 2' में स्थिति यह जांचेगी कि क्या 'बी' 'सी' (लाइन 18) से अधिक है।
  • कोड लाइन 21: यदि 'b' 'c' से बड़ा है, तो संदेश 'B सबसे बड़ा है' मुद्रित किया जाएगा (पंक्ति 19), अन्यथा यदि कंडिशन 2 विफल रहता है, तो 'C' सबसे बड़ा है (प्रिंट 21) (लाइन 21)।
  • कोड लाइन 24: स्टेटमेंट "प्रोग्राम कम्प्लीट" (लाइन 24) को प्रिंट करना।

कोड का आउटपुट:

Program started.Checking Nested-IF 2C is greatestProgram completed.

सारांश

इस अध्याय में, हमने अलग-अलग निर्णय लेने वाले बयान और उनके वाक्यविन्यास और उदाहरण सीखे हैं। नीचे दी गई तालिका में विभिन्न सशर्त बयानों का सारांश दिया गया है, जिनके बारे में हमने चर्चा की है।

प्रकार

विवरण

प्रयोग

तो अगर

बूलियन स्थिति के लिए चेक, यदि 'THEN' ब्लॉक में TRUE कोड निष्पादित किया जाएगा।

शर्त के आधार पर किसी विशेष कोड को छोड़ना / निष्पादित करना।

अगर तब या

बूलियन स्थिति के लिए चेक, यदि 'THEN' ब्लॉक में TRUE कोड निष्पादित किया जाएगा, यदि 'ELSE' ब्लॉक में गलत कोड निष्पादित किया गया है।

'THIS-OR-THAT' स्थिति में सबसे उपयुक्त है।

इफ-थेन-ईएलएसआईएफ

अनुक्रमिक क्रम में एक बूलियन स्थिति के लिए जाँच करता है। अनुक्रम में पहला ब्लॉक जो TRUE स्थिति देता है, निष्पादित किया जाएगा। यदि अनुक्रम में कोई भी स्थिति TRUE नहीं है, तो 'ELSE' ब्लॉक में कोड निष्पादित किया जाता है।

ज्यादातर दो विकल्पों में से चुनने के लिए उपयोग किया जाता है।

नेस्ट-अगर

एक और अधिक IF-THEN या IF-THEN-ELSIF स्टेटमेंट को किसी अन्य IF-THEN या IF-THEN-ELSIF स्टेटमेंट के अंदर अनुमति देता है।

मुख्य रूप से नेस्टेड स्थिति स्थिति में उपयोग किया जाता है।