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

เรียก Stored Procedure ภายใน Stored Procedure พร้อมเงื่อนไข IF ใน MySQL

สามารถเรียก 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