Oracle PL / SQL: उदाहरणों के साथ CASE कथन

विषय - सूची:

Anonim

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

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

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

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

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

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

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

DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_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: चर 'बी' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे मान के साथ प्रारंभ करना '5.'
  • कोड लाइन 4: चर 'arth_operation' को 'VARCHAR2' डेटा प्रकार 20 के आकार के रूप में घोषित करना और इसे 'MULTIPLY' मान के साथ आरंभ करना।
  • कोड लाइन 6: "प्रोग्राम शुरू हुआ" कथन को प्रिंट करना।
  • कोड लाइन 7: CASE अभिव्यक्ति के मूल्य की जांच करता है। इस स्थिति में, चर 'arth_operation' का मान 'MULTIPLY' है। इस मूल्य को अब इस CASE स्टेटमेंट के लिए एक चयनकर्ता के रूप में माना जाएगा।
  • कोड लाइन 10: 'MULTIPLY' मान के साथ WHEN क्लॉज चयनकर्ता मान के साथ मेल खाता है, इसलिए नियंत्रक इस एक्शन_ब्लॉक का चयन करेगा और 'संख्याओं का गुणन: 275' संदेश को प्रिंट करेगा।
  • कोड लाइन 13: CASE स्टेटमेंट के अंत को चिह्नित करता है।
  • कोड लाइन 14: "प्रोग्राम पूरा हुआ" स्टेटमेंट को प्रिंट करना।

कोड आउटपुट:

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

खोजे गए कथन

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

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

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

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  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';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN 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: चर 'बी' को 'NUMBER' डेटा प्रकार के रूप में घोषित करना और इसे '5' के साथ आरंभ करना।
  • कोड लाइन 4: चर 'arth_operation' को 'VARCHAR2' डेटा प्रकार 20 के आकार के रूप में घोषित करना और इसे 'DIVIDE' मान से आरंभ करना।
  • कोड लाइन 6: "प्रोग्राम शुरू हुआ" कथन को प्रिंट करना।
  • कोड लाइन 7: खोजे गए कथन की शुरुआत होती है। लाइन 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: 11Program completed.

सारांश

प्रकार विवरण प्रयोग

मामला

IF-THEN-ELSIF स्टेटमेंट के समान। बूलियन अभिव्यक्ति के बजाय विकल्प चुनने के लिए एक 'चयनकर्ता' का उपयोग किया जाता है।

'SELECTOR' का उपयोग करके कई विकल्पों में से चयन किया जाता है

खोजा हुआ मामला

कोई वास्तविक 'चयनकर्ता' के साथ मामला नहीं। इसके बजाय, इसमें वास्तविक स्थिति (जो TRUE / FALSE का मूल्यांकन करती है) शामिल है जो विकल्पों का चयन करेगी।

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