Giới thiệu
Trong stored procedure, sử dụng DECLARE để khai báo biến cục bộ, sau đó gán giá trị bằng SET hoặc SELECT ... INTO.
1. Tạo stored procedure với biến
mysql> DELIMITER //
mysql> CREATE PROCEDURE DECLARE_VARIABLE_DEMO(IN value int)
-> BEGIN
-> DECLARE searchValue int;
-> SET searchValue = value;
-> IF searchValue = 10 THEN
-> SELECT searchValue + 100;
-> ELSE
-> SELECT searchValue;
-> END IF;
-> END
-> //
Query OK, 0 rows affected (0.17 sec)
mysql> DELIMITER ;
Quy tắc DECLARE:
- Phải đặt ngay sau
BEGIN, trước mọi câu lệnh khác - Cú pháp:
DECLARE var_name type [DEFAULT value]; - Phạm vi: Chỉ trong khối BEGIN...END chứa nó
- Có thể khai báo nhiều biến:
DECLARE a, b INT DEFAULT 0;
2. Gọi procedure với tham số 10
mysql> call DECLARE_VARIABLE_DEMO(10);
3. Kết quả
+-----------------+ | searchValue+100 | +-----------------+ | 110 | +-----------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.02 sec)
Ví dụ nâng cao: SELECT INTO
CREATE PROCEDURE get_user_count(OUT total INT)
BEGIN
DECLARE cnt INT DEFAULT 0;
SELECT COUNT(*) INTO cnt FROM users;
SET total = cnt;
END;
Phân biệt biến:
@user_var: User-defined session variable (toàn session, không cần DECLARE)DECLARE local_var: Local variable (chỉ trong procedure, bắt buộc DECLARE)IN/OUT/INOUT param: Tham số procedure