Từ khóa DECLARE dùng để khai báo biến cục bộ (local variable) bên trong BEGIN ... END của stored procedure/function/trigger.
Cú pháp
DECLARE ten_bien kieu_du_lieu [DEFAULT gia_tri_mac_dinh];
Ví dụ minh họa
Tạo procedure demo biến:
mysql> DELIMITER //
mysql> CREATE PROCEDURE variable_Demo()
BEGIN
DECLARE lastInsertedId INT DEFAULT -1;
SELECT lastInsertedId;
SET @providedLastId = 10001;
SELECT @providedLastId;
END //
mysql> DELIMITER ;
Gọi procedure:
mysql> CALL variable_Demo();
Kết quả (2 result set):
+----------------+ | lastInsertedId | +----------------+ | -1 | +----------------+ 1 row in set +-----------------+ | @providedLastId | +-----------------+ | 10001 | +-----------------+
Phân biệt biến cục bộ vs biến người dùng:
| Đặc điểm | Biến cục bộ (DECLARE) | Biến người dùng (@) |
|---|---|---|
| Phạm vi | Chỉ trong BEGIN...END | Cả session |
| Ký hiệu | Không có @ | Có @ đầu |
| Khai báo | Bắt buộc DECLARE | Không cần, gán trực tiếp |
| Kiểu dữ liệu | Phải khai báo | Tự suy diễn |
| Dùng trong | Proc, Function, Trigger | Mọi nơi trong session |
Lưu ý: DECLARE phải đặt ngay sau BEGIN, trước mọi statement khác.