CASE statement có chức năng như IF-THEN-ELSE. Cú pháp:
CASE
WHEN condition_1 THEN {...statements...}
[WHEN condition_2 THEN {...statements...}]
[WHEN condition_n THEN {...statements...}]
[ELSE {...statements...}]
END CASE;
Nếu không WHEN nào khớp, chạy ELSE.
Bảng 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)
Tạo procedure coursedetails_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)
Gọi procedure:
mysql> CALL coursedetails_CASE('Computers', @S_course); SELECT @S_Course; -- B.Tech(CSE)
mysql> CALL coursedetails_CASE('literature', @S_course); SELECT @S_Course; -- Masters in English
mysql> CALL coursedetails_CASE('Math', @S_course); SELECT @S_Course; -- Subject Not in the table
mysql> CALL coursedetails_CASE('History', @S_course); SELECT @S_Course; -- Masters in History