Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sử dụng CASE statement trong MySQL stored procedure

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