केस स्टेटमेंट Oracle PL/SQL उदाहरणों के साथ

केस स्टेटमेंट क्या है?

CASE कथन IF-THEN-ELSIF कथन के समान है जो उपलब्ध विकल्पों में से शर्त के आधार पर एक विकल्प का चयन करता है।

  • CASE कथन अनुक्रम को चुनने के लिए बूलियन अभिव्यक्ति के बजाय “चयनकर्ता” का उपयोग करता है।
  • CASE कथन में अभिव्यक्ति का मान चयनकर्ता के रूप में माना जाएगा।
  • अभिव्यक्ति किसी भी प्रकार की हो सकती है (अंकगणित, चर, आदि)
  • प्रत्येक विकल्प को एक निश्चित पूर्व-निर्धारित मान (चयनकर्ता) दिया जाता है, तथा चयनकर्ता मान वाला विकल्प, जो सशर्त अभिव्यक्ति मान से मेल खाता है, निष्पादित हो जाएगा।
  • IF-THEN-ELSIF के विपरीत, CASE कथन का उपयोग SQL कथनों में भी किया जा सकता है।
  • CASE कथन में ELSE ब्लॉक उस अनुक्रम को रखता है जिसे तब निष्पादित करने की आवश्यकता होती है जब कोई भी विकल्प चयनित नहीं होता है।

वाक्य - विन्यास

CASE (expression)
 WHEN <valuel> THEN action_blockl;
 WHEN <value2> THEN action_block2;
 WHEN <value3> THEN action_block3;
 ELSE action_block_default;
END CASE;
  • उपरोक्त सिंटैक्स में, अभिव्यक्ति एक मान लौटाएगी जो किसी भी प्रकार का हो सकता है (चर, संख्या, आदि)।
  • प्रत्येक 'WHEN' खंड को वैकल्पिक खंड के रूप में माना जाता है, जिसमें और .
  • 'WHEN' क्लॉज़ जो अभिव्यक्ति के मान से मेल खाता है, उसे चुना जाएगा, और संगत निष्पादित किया जाएगा.
  • 'ELSE' ब्लॉक वैकल्पिक है जो इसे तब निष्पादित करने की आवश्यकता होती है जब कोई भी विकल्प अभिव्यक्ति मान से मेल नहीं खाता।
  • 'END' CASE कथन के अंत को दर्शाता है, और यह CASE का अनिवार्य भाग है।

उदाहरण 1: केस का उपयोग करके अंकगणितीय गणना

इस उदाहरण में, हम दो संख्याओं 55 और 5 के बीच अंकगणितीय गणना करने जा रहे हैं।

DECLARE
a NUMBER :=55;
b NUMBER :=5;
arth_operation VARCHAR2(20) :='MULTIPLY’;
BEGIN
dbms_output.put_line(‘Program started.' );
CASE (arth_operation)
WHEN ‘ADD’ THEN dbms_output.put_line(‘Addition of the numbers are: '|| a+b );
WHEN ‘SUBTRACT' THEN dbms_output.put_line(‘Subtraction of the numbers are: '||a-b ); 
WHEN ‘MULTIPLY' THEN dbms_output.put_line(‘Multiplication of the numbers are: '|| a*b
);
WHEN ‘DIVIDE' THEN dbms_output.put_line(‘Division of the numbers are:'|| a/b);
ELSE dbms_output.put_line(‘No operation action defined. Invalid operation');
END CASE;
dbms_output.put_line(‘Program completed.' );
END;
/

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

  • कोड पंक्ति 2: चर 'a' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '55' मान के साथ आरंभ करना।
  • कोड पंक्ति 3: चर 'b' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना तथा इसे '5' मान के साथ आरंभीकृत करना।
  • कोड पंक्ति 4: चर 'arth_operation' को 2 आकार के 'VARCHAR20' डेटा प्रकार के रूप में घोषित करना तथा इसे 'MULTIPLY' मान के साथ आरंभ करना।
  • कोड पंक्ति 6: “प्रोग्राम प्रारंभ हुआ” कथन मुद्रित किया जा रहा है।
  • कोड लाइन 7: CASE अभिव्यक्ति के मान की जाँच करता है। इस मामले में, चर 'arth_operation' का मान 'MULTIPLY' है। इस मान को अब इस CASE कथन के लिए चयनकर्ता के रूप में माना जाएगा।
  • कोड पंक्ति 10: 'MULTIPLY' मान वाला WHEN क्लॉज़ चयनकर्ता मान से मेल खाता है, इसलिए नियंत्रक इस action_block का चयन करेगा और संदेश 'संख्याओं का गुणनफल है: 275' मुद्रित करेगा।
  • कोड पंक्ति 13: CASE कथन के अंत को चिह्नित करता है।
  • कोड पंक्ति 14: “प्रोग्राम पूर्ण हुआ” कथन मुद्रित किया जा रहा है।

कोड आउटपुट

Program started.
Multiplication of the numbers are: 275
Program completed.

खोजे गए मामले का विवरण

SEARCHED CASE कथन CASE कथन के समान है, विकल्प का चयन करने के लिए चयनकर्ता का उपयोग करने के बजाय, SEARCHED CASE में सीधे WHEN खंड में परिभाषित अभिव्यक्ति होगी।

  • शर्त को पूरा करने वाला पहला WHEN क्लॉज निष्पादित किया जाएगा, तथा नियंत्रक शेष विकल्पों को छोड़ देगा।

वाक्य - विन्यास

CASE
WHEN <expression1> THEN action_blockl; 
WHEN <expression2> THEN action_block2; 
WHEN <expression3> THEN action_block3; 
ELSE action_block_default;
END CASE;
  • उपरोक्त सिंटैक्स में, प्रत्येक WHEN क्लॉज़ का अलग-अलग अर्थ होता है और .
  • वह WHEN क्लॉज़ निष्पादित किया जाएगा जिसके लिए अभिव्यक्ति TRUE लौटाती है।
  • 'ELSE' ब्लॉक वैकल्पिक है जो धारण करता है इसका क्रियान्वयन तब किया जाना चाहिए जब कोई भी विकल्प संतुष्ट न करे।
  • 'END' CASE कथन के अंत को दर्शाता है और यह CASE का अनिवार्य भाग है।

उदाहरण 1: खोजे गए केस का उपयोग करके अंकगणितीय गणना

इस उदाहरण में, हम दो संख्याओं 55 और 5 के बीच अंकगणितीय गणना करने जा रहे हैं।

DECLARE a NUMBER :=55;
b NUMBER :=5;
arth_operation VARCHAR2(20) :='DIVIDE';
BEGIN
dbms_output.put_line(‘Program started.' );
CASE
WHEN arth_operation = 'ADD'
THEN dbms_output.put_line(‘Addition of the numbers are: '||a+b );
WHEN arth_operation = ‘SUBTRACT'
THEN dbms_output.put_line(‘Subtraction of the numbers are: '|| a-b);
WHEN arth_operation = ‘MULTIPLY’
THEN dbms_output.put_line(‘Multiplication of the numbers are: '|| a*b ); 
WHEN arth_operation = ’DIVIDE'
THEN dbms_output.put_line(‘Division of the numbers are: '|| a/b ):
ELSE dbms_output.put_line(‘No operation action defined. Invalid operation'); 
END CASE;
dbms_output.put_line(‘Program completed.' );
END;
/

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

  • कोड पंक्ति 2: चर 'a' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '55' मान के साथ आरंभ करना।
  • कोड पंक्ति 3: चर 'b' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '5' मान के साथ आरंभ करना।
  • कोड पंक्ति 4: चर 'arth_operation' को 2 आकार के 'VARCHAR20' डेटा प्रकार के रूप में घोषित करना तथा इसे 'DIVIDE' मान के साथ आरंभीकृत करना।
  • कोड पंक्ति 6: “प्रोग्राम प्रारंभ हुआ” कथन मुद्रित किया जा रहा है।
  • कोड लाइन 7: SEARCHED CASE कथन शुरू होता है। लाइन 8 से लाइन 13 तक का कोड छोड़ दिया जाता है क्योंकि उनका चयनकर्ता मान (ADD, SUBTRACT, MULTIPLY) 'arth_operation' के मान से मेल नहीं खाता है।
  • कोड पंक्ति 14: WHEN क्लॉज़ अभिव्यक्ति “arth_operation = 'DIVIDE'” संतुष्ट है और अभिव्यक्ति TRUE लौटाती है।
  • कोड पंक्ति 15: WHEN क्लॉज का Action_block निष्पादित किया जाएगा, और संदेश 'संख्याओं का विभाजन है: 11' मुद्रित किया जाएगा।
  • कोड पंक्ति 17: CASE कथन के अंत को चिह्नित करता है।
  • कोड पंक्ति 18: “प्रोग्राम पूर्ण हुआ” कथन मुद्रित किया जा रहा है।

कोड आउटपुट

Program started.
Division of the numbers are: 11
Program completed.

सारांश

TYPE वर्णन उपयोग
CASE के समान यदि-तो-ELSIF कथन. बूलियन अभिव्यक्ति के बजाय विकल्पों को चुनने के लिए 'चयनकर्ता' का उपयोग किया जाता है. 'SELECTOR' का उपयोग करके कई विकल्पों में से चयन करने के लिए उपयोग किया जाता है
खोजा गया मामला CASE कथन जिसमें कोई वास्तविक 'SELECTOR' नहीं है। इसके बजाय, इसमें वास्तविक शर्त (जिसका मूल्यांकन TRUE/FALSE होता है) शामिल है जो विकल्पों का चयन करेगी। अधिकतर दो से अधिक विकल्पों में से चयन करने के लिए उपयोग किया जाता है।