Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีใช้คำสั่ง IF ELSEIF ELSE ใน Stored Procedure ของ MySQL


คำสั่ง 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)