Trong stored procedure MySQL, biến cục bộ (local variable) phải khai báo bằng DECLARE ngay sau BEGIN, trước mọi statement khác.
Quy tắc
- Khai báo giữa
BEGINvàEND. - Phải là statement đầu tiên sau
BEGIN. - Cú pháp:
DECLARE var_name data_type [DEFAULT value];
Ví dụ minh họa
DELIMITER //
CREATE PROCEDURE showVariablesValue()
BEGIN
DECLARE output VARCHAR(100);
SET output = 'Hello MySQL';
SELECT output;
END //
DELIMITER ;
Gọi procedure:
CALL showVariablesValue();
Kết quả:
+-------------+ | output | +-------------+ | Hello MySQL | +-------------+
Lưu ý:
- Biến cục bộ (
DECLARE) khác biến user-defined (@var). Biến cục bộ chỉ tồn tại trong procedure, không có dấu@. - Có thể khai báo nhiều biến:
DECLARE a INT DEFAULT 0; DECLARE b VARCHAR(50);hoặcDECLARE a INT DEFAULT 0, b VARCHAR(50);. - Gán giá trị:
SET var = expr;hoặcSELECT col INTO var FROM .... - Khai báo sai vị trí (sau
SELECThoặcINSERT) sẽ báo lỗi:ERROR 1337 (HY000): Variable declaration must be at start of block.