Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

संग्रहीत प्रक्रिया में MySQL केस स्टेटमेंट का उपयोग कैसे किया जा सकता है?


असल में, CASE स्टेटमेंट में IF-THEN-ELSE स्टेटमेंट की कार्यक्षमता होती है। इसमें निम्नलिखित सिंटैक्स है -

CASE
WHEN condition_1 THEN
   {...statements to execute when condition_1 is TRUE...}
[ WHEN condition_2 THEN
   {...statements to execute when condition_2 is TRUE...} ]
[ WHEN condition_n THEN
   {...statements to execute when condition_n is TRUE...} ]
[ ELSE
   {...statements to execute when all conditions were FALSE...} ]
END CASE;

यदि WHEN क्लॉज में से कोई भी निष्पादित नहीं किया गया था, तो CASE स्टेटमेंट ELSE क्लॉज को निष्पादित करेगा।

CASE . के उपयोग को प्रदर्शित करने के लिए MySQL संग्रहीत कार्यविधि के भीतर, हम निम्नलिखित संग्रहीत कार्यविधि बना रहे हैं जो नीचे दिखाए गए मानों पर आधारित है, 'student_info' नाम की तालिका के -

mysql> Select * from student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Jaipur     | Literature |
| 125  | Raman   | Shimla     | Computers  |
+------+---------+------------+------------+
3 rows in set (0.00 sec)

निम्न क्वेरी से 'coursedetails_CASE' नाम की एक प्रक्रिया बनेगी, जिसमें एक CASE स्टेटमेंट होगा -

mysql> Delimiter //
mysql> CREATE PROCEDURE coursedetails_CASE(IN S_subject Varchar(20), OUT S_Course Varchar(50))
   -> BEGIN
   -> DECLARE SUB VArchar(20);
   -> SELECT SUBJECT INTO Sub
   -> FROM Student_Info WHERE S_Subject = Subject;
   -> CASE S_Subject WHEN 'Computers' THEN
   -> SET S_Course = 'B.Tech(CSE)’;
   -> WHEN 'History' THEN
   -> SET S_Course = 'Masters in History';
   -> WHEN 'Literature' THEN
   -> SET S_Course = 'Masters in English';
   -> ELSE
   -> SET S_Course = 'Subject not in the table';
   -> END CASE ;
   -> END //
Query OK, 0 rows affected (0.11 sec)

अब, जब हम इस प्रक्रिया को लागू करते हैं तो हम नीचे परिणाम देख सकते हैं -

mysql> DELIMITER ;
mysql> CALL coursedetails_CASE ('Computers', @S_course);
Query OK, 1 row affected (0.08 sec)

mysql> Select @S_Course;
+-------------+
| @S_Course   |
+-------------+
| B.Tech(CSE) |
+-------------+
1 row in set (0.00 sec)

mysql> CALL coursedetails_CASE ('literature', @S_course);
Query OK, 1 row affected (0.00 sec)

mysql> Select @S_Course;
+--------------------+
| @S_Course          |
+--------------------+
| Masters in English |
+--------------------+
1 row in set (0.00 sec)

mysql> CALL coursedetails_CASE ('Math', @S_course);
Query OK, 0 rows affected (0.00 sec)

mysql> Select @S_Course;
+--------------------------------+
| @S_Course                      |
+--------------------------------+
| Subject Not in the table       |
+--------------------------------+
1 row in set (0.00 sec)

mysql> CALL coursedetails_CASE ('History', @S_course);
Query OK, 1 row affected (0.01 sec)

mysql> Select @S_Course;
+--------------------+
| @S_Course          |
+--------------------+
| Masters in History |
+--------------------+
1 row in set (0.00 sec)

  1. हम एक MySQL संग्रहीत प्रक्रिया को कैसे बदल सकते हैं?

    यदि हमारे पास प्रक्रिया के लिए ALTER ROUTINE विशेषाधिकार हैं तो ALTER PROCEDURE की सहायता से कथन हम एक MySQL संग्रहीत प्रक्रिया को बदल सकते हैं। इसे प्रदर्शित करने के लिए हम delete_studentinfo नामक एक संग्रहित प्रक्रिया का एक उदाहरण ले रहे हैं जिसमें निम्नलिखित एक स्टेटमेंट बनाते हैं - बनाने की प्

  1. एक MySQL संग्रहीत कार्यविधि इसके अंदर किसी अन्य MySQL संग्रहीत कार्यविधि को कैसे कॉल कर सकती है?

    यह बहुत संभव है कि एक MySQL संग्रहीत कार्यविधि इसके अंदर किसी अन्य MySQL संग्रहीत कार्यविधि को कॉल कर सकती है। इसे प्रदर्शित करने के लिए, हम एक उदाहरण ले रहे हैं जिसमें एक संग्रहीत कार्यविधि last_insert_id का पता लगाने के लिए किसी अन्य संग्रहीत कार्यविधि को कॉल करेगी। उदाहरण mysql> Create table e

  1. MySQL में चुनिंदा कथन का उपयोग करके संग्रहीत प्रक्रिया को कैसे कॉल करें?

    MySQL में, FROM क्लॉज में सेलेक्ट फ्रॉम प्रोसेस का उपयोग करना संभव नहीं है। आप कॉल कमांड का उपयोग कर सकते हैं और उसके बाद सेलेक्ट स्टेटमेंट को निष्पादित किया जा सकता है। आइए पहले एक टेबल बनाएं: );क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.66 सेकंड) संग्रहीत कार्यविधि बनाने की क्वेरी निम्नलिखित है: D