ใช้ IF-THEN-ELSE ควบคุมเงื่อนไขภายใน Stored Procedure
MySQL Stored Procedure รองรับโครงสร้างควบคุมเงื่อนไข IF ... THEN ... ELSE ... END IF เพื่อเลือก Execute คำสั่ง SQL ที่ต่างกันตามเงื่อนไข
ตัวอย่างสร้างตาราง 2 ตาราง
CREATE TABLE DemoTable1 (Id INT); CREATE TABLE DemoTable2 (Id INT); INSERT INTO DemoTable1 VALUES (10), (20), (30); INSERT INTO DemoTable2 VALUES (40), (50), (60);
สร้าง Stored Procedure รับพารามิเตอร์ ตัดสินใจ SELECT จากตารางไหน
DELIMITER //
CREATE PROCEDURE Conditional_Query(IN p_id INT)
BEGIN
IF p_id >= 40 THEN
SELECT * FROM DemoTable2;
ELSE
SELECT * FROM DemoTable1;
END IF;
END //
DELIMITER ;
ทดสอบเรียกใช้
CALL Conditional_Query(100); -- >= 40 เลือก DemoTable2
+------+ | Id | +------+ | 40 | | 50 | | 60 | +------+
CALL Conditional_Query(13); -- < 40 เลือก DemoTable1
+------+ | Id | +------+ | 10 | | 20 | | 30 | +------+
โครงสร้าง IF ใน MySQL:
IF condition THEN statementsELSEIF condition THEN statements(สามารถมีหลายอัน)ELSE statementsEND IF
ตัวอย่าง IF หลายเงื่อนไข (ELSEIF):
IF score >= 90 THEN
SET grade = 'A';
ELSEIF score >= 80 THEN
SET grade = 'B';
ELSEIF score >= 70 THEN
SET grade = 'C';
ELSE
SET grade = 'F';
END IF;
ข้อควรระวัง: ต้องใช้ DELIMITER // ... DELIMITER ; ครอบ Procedure เพื่อไม่ให้ ; ภายในถูกตีความว่าจบคำสั่ง