Cấu trúc IF trong Stored Procedure
MySQL hỗ trợ IF condition THEN ... END IF trong stored program (procedure, function, trigger).
Ví dụ
Tạo bảng:
CREATE TABLE DemoTable643 (ClientId INT);
INSERT INTO DemoTable643 VALUES (1000);
Tạo procedure:
DELIMITER //
CREATE PROCEDURE IF_DEMO(IN argument INT)
BEGIN
DECLARE firstArgument INT DEFAULT 0;
DECLARE secondArgument INT DEFAULT 1;
IF firstArgument = argument THEN
INSERT INTO DemoTable643 VALUES (2000);
END IF;
IF secondArgument = argument THEN
SELECT * FROM DemoTable643;
END IF;
END //
DELIMITER ;
Gọi procedure với argument = 0 (chạy INSERT):
CALL IF_DEMO(0);
Gọi procedure với argument = 1 (chạy SELECT):
CALL IF_DEMO(1);
Kết quả:
+----------+
| ClientId |
+----------+
| 1000 |
| 2000 |
+----------+
Cú pháp IF đầy đủ
IF condition THEN
-- statements
ELSEIF condition2 THEN
-- statements
ELSE
-- statements
END IF;
Lưu ý
IFstatement chỉ dùng trong stored program (BEGIN...END), KHÔNG dùng trong query thường.- Trong query thường dùng hàm
IF(condition, true_val, false_val). - Khối BEGIN...END cần
DELIMITERthay đổi khi tạo procedure. - Biến local (
DECLARE) khác biến user (@var).
Ứng dụng thực tế
- Logic điều hướng: Nếu tham số A thì INSERT, nếu B thì UPDATE, nếu C thì SELECT.
- Validation: IF invalid THEN SIGNAL SQLSTATE '45000'.
- Dynamic SQL: IF condition THEN PREPARE/EXECUTE.