คำสั่ง IF ELSEIF ELSE ของ MySQL ใช้สำหรับรันคำสั่งตามเงื่อนไขหลายเงื่อนไข ไวยากรณ์มีดังนี้:
IF expression THEN
statements;
ELSEIF elseif-expression THEN
elseif-statements;
...
ELSE
else-statements;
END IF;
คำสั่งแต่ละคำสั่งต้องจบด้วยเครื่องหมายอัฒภาค (;)
เพื่อสาธิตการใช้ IF ELSEIF ELSE ภายใน Stored Procedure เราจะสร้างตารางชื่อ 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)
คำสั่งต่อไปนี้จะสร้าง Stored Procedure ชื่อ coursedetails_IF_ELSEIF ที่มีคำสั่ง IF ELSEIF ELSE อยู่ภายใน:
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)
ตอนนี้เราสามารถดูผลลัพธ์เมื่อเรียกใช้ Procedure นี้:
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)