केस स्टेटमेंट 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; /
Code व्याख्या
- Code पंक्ति 2: चर 'a' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '55' मान से आरंभ करना।
- Code पंक्ति 3: चर 'b' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '5' मान से आरंभ करना।
- Code पंक्ति 4: 'arth_operation' नामक चर को 'VARCHAR2' डेटा प्रकार और आकार 20 के रूप में घोषित करना तथा इसे 'MULTIPLY' मान से आरंभ करना।
- Code पंक्ति 6: "प्रोग्राम शुरू हो गया" कथन को प्रिंट करना।
- Code पंक्ति 7: CASE कथन व्यंजक के मान की जाँच करता है। इस स्थिति में, 'arth_operation' चर का मान 'MULTIPLY' है। इस मान को अब इस CASE कथन के लिए चयनकर्ता के रूप में माना जाएगा।
- Code पंक्ति 10: 'MULTIPLY' मान वाला WHEN खंड चयनकर्ता मान से मेल खाता है, इसलिए नियंत्रक इस action_block का चयन करेगा और संदेश मुद्रित करेगा 'संख्याओं का गुणनफल है: 275'।
- Code पंक्ति 13: CASE कथन के अंत को चिह्नित करती है।
- Code पंक्ति 14: "प्रोग्राम पूर्ण हो गया" कथन को प्रिंट करना।
Code उत्पादन
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; /
Code व्याख्या
- Code पंक्ति 2: चर 'a' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '55' मान से आरंभ करना।
- Code पंक्ति 3: चर 'b' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '5' मान से आरंभ करना।
- Code पंक्ति 4: 'arth_operation' नामक चर को 'VARCHAR2' डेटा प्रकार और आकार 20 के रूप में घोषित करना और इसे 'DIVIDE' मान से आरंभ करना।
- Code पंक्ति 6: "प्रोग्राम शुरू हो गया" कथन को प्रिंट करना।
- Code पंक्ति 7: SEARCHED CASE स्टेटमेंट शुरू होता है। पंक्ति 8 से पंक्ति 13 तक का कोड छोड़ दिया जाता है क्योंकि उनके चयनकर्ता मान (ADD, SUB) हैं।TRACT, MULTIPLY) 'arth_operation' के मान से मेल नहीं खाता है।
- Code पंक्ति 14: WHEN खंड अभिव्यक्ति “arth_operation = 'DIVIDE'” संतुष्ट है और अभिव्यक्ति TRUE लौटाती है।
- Code पंक्ति 15: WHEN खंड का Action_block निष्पादित होगा, और 'संख्याओं का विभाजन है: 11' संदेश मुद्रित होगा।
- Code पंक्ति 17: CASE कथन के अंत को दर्शाती है।
- Code पंक्ति 18: "प्रोग्राम पूर्ण हो गया" कथन को प्रिंट करना।
Code उत्पादन
Program started. Division of the numbers are: 11 Program completed.
सारांश
| TYPE | वर्णन | उपयोग |
|---|---|---|
| केस स्टडीज़ | के समान यदि-तो-ELSIF कथन. बूलियन अभिव्यक्ति के बजाय विकल्पों को चुनने के लिए 'चयनकर्ता' का उपयोग किया जाता है. | 'SELECTOR' का उपयोग करके कई विकल्पों में से चयन करने के लिए उपयोग किया जाता है |
| खोजा गया मामला | CASE कथन जिसमें कोई वास्तविक 'SELECTOR' नहीं है। इसके बजाय, इसमें वास्तविक शर्त (जिसका मूल्यांकन TRUE/FALSE होता है) शामिल है जो विकल्पों का चयन करेगी। | अधिकतर दो से अधिक विकल्पों में से चयन करने के लिए उपयोग किया जाता है। |
