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

ใช้ IF NOT IN ใน Stored Procedure ของ MySQL

สามารถใช้ IF ... NOT IN ... THEN ... ELSE ... END IF ภายใน Stored Procedure ได้

ไวยากรณ์

IF (yourVariableName NOT IN (value1, value2, ... N)) THEN
    statement1;
ELSE
    statement2;
END IF;

ตัวอย่างสร้าง Procedure

mysql> DELIMITER //
mysql> CREATE PROCEDURE IF_NOT_INDemo(IN value INT)
    -> BEGIN
    ->     IF (value NOT IN (10,20,30)) THEN
    ->         SELECT "Value Not Found";
    ->     ELSE
    ->         SELECT "Value Found";
    ->     END IF;
    -> END
    -> //
Query OK, 0 rows affected (0.25 sec)
mysql> DELIMITER ;

ทดสอบเรียกใช้งาน

Case 1: พบค่า (10)

mysql> CALL IF_NOT_INDemo(10);
+-------------+
| Value Found |
+-------------+
| Value Found |
+-------------+

Case 2: ไม่พบค่า (100)

mysql> CALL IF_NOT_INDemo(100);
+-----------------+
| Value Not Found |
+-----------------+
| Value Not Found |
+-----------------+

ข้อควรระวัง

  • ใช้ DELIMITER เปลี่ยนตัวคั่นคำสั่งชั่วคราวขณะสร้าง Procedure
  • NOT IN จะคืนค่า NULL หากรายการมีค่า NULL อยู่ -> ใช้ NOT EXISTS หรือตรวจสอบ NULL ก่อนหน้าที่ดีกว่า
  • MySQL 8.0+ รองรับ NOT IN กับ Subquery ได้ดีขึ้น