Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để sử dụng câu lệnh IF ELSEIF ELSE của MySQL trong một thủ tục được lưu trữ?


MySQL IF ELSEIF ELSE thực hiện các câu lệnh dựa trên nhiều biểu thức Cú pháp của nó như sau -

IF expression THEN
   statements;
ELSEIF elseif-expression THEN
   elseif-statements;
… … … …
ELSE
  else-statements;
END IF;

Các câu lệnh phải kết thúc bằng dấu chấm phẩy.

Để chứng minh việc sử dụng IF ELSEIF ELSE trong thủ tục được lưu trữ trong MySQL, chúng tôi đang tạo thủ tục được lưu trữ sau dựa trên các giá trị, như được hiển thị bên dưới, của bảng có tên ‘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)

Truy vấn sau sẽ tạo một thủ tục có tên là ‘coursedetails_IF_ELSEIF’ có IF ELSEIF ELSE tuyên bố trong đó -

mysql> DELIMITER // ;
mysql> CREATE PROCEDURE coursedetails_IF_ELSEIF(IN S_Subject Varchar(20), OUT S_Course varchar(20))
    -> BEGIN
    -> DECLARE Sub Varchar(20);
    -> SELECT Subject INTO SUB
    -> FROM Student_info WHERE S_Subject = Subject;
    -> IF Sub = 'Computers' THEN
    -> SET S_Course = 'B.Tech(CSE)';
    -> ELSEIF Sub = 'History' THEN
    -> SET S_Course = 'Masters in History';
    -> ELSEIF Sub = 'Literature' THEN
    -> SET S_Course = 'Masters in English';
    -> END IF;
    -> END //
Query OK, 0 rows affected (0.00 sec)

Bây giờ, chúng ta có thể thấy kết quả bên dưới khi gọi thủ tục này -

mysql> Delimiter ; //

mysql> CALL coursedetails_IF_ELSEIF('Computers', @S_Course);
Query OK, 1 row affected (0.00 sec)

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

mysql> CALL coursedetails_IF_ELSEIF ('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)