สามารถเรียก Stored Procedure อื่นภายใน Stored Procedure ได้ โดยใช้คำสั่ง CALL ร่วมกับเงื่อนไข IF-ELSE รูปแบบ syntax ดังนี้:
IF yourInputValue > 100 THEN
CALL yourProcedureName1();
ELSE
CALL yourProcedureName2();
END IF;
ตัวอย่างการใช้งานจริง
1. สร้าง Stored Procedure แรก
mysql> delimiter //
mysql> create procedure Hello_Stored_Procedure()
-> BEGIN
-> select 'Hello World!!!';
-> END
-> //
Query OK, 0 rows affected (0.18 sec)
2. สร้าง Stored Procedure ที่สอง
mysql> create procedure Hi_Stored_Procedure()
-> BEGIN
-> select 'Hi!!!';
-> END
-> //
Query OK, 0 rows affected (0.17 sec)
3. สร้าง Stored Procedure หลักที่มีเงื่อนไข IF เรียกทั้งสองตัว
mysql> DELIMITER //
mysql> create procedure test(IN input int)
-> BEGIN
-> IF input > 100 THEN
-> CALL Hello_Stored_Procedure();
-> ELSE
-> CALL Hi_Stored_Procedure();
-> END IF;
-> END
-> //
Query OK, 0 rows affected (0.18 sec)
4. เรียกใช้งาน Stored Procedure หลัก
mysql> delimiter ; mysql> call test(110);
ผลลัพธ์ (เนื่องจาก 110 > 100 จึงเรียก Hello_Stored_Procedure):
+----------------+ | Hello World!!! | +----------------+ | Hello World!!! | +----------------+ 1 row in set (0.00 sec)
หากเรียก call test(50); จะได้ผลลัพธ์ Hi!!! แทน
สรุป
- ใช้
DELIMITER //ก่อนสร้าง Procedure และDELIMITER ;หลังเสร็จ - ใช้
CALL procedure_name()เพื่อเรียก Procedure อื่น - เงื่อนไข
IF-THEN-ELSEทำงานได้ตามปกติภายใน Procedure