Sử dụng biến người dùng (@) trong MySQL Stored Procedure
Trong MySQL, không thể đặt ký tự @ ở đầu tên tham số của Stored Procedure. Ký tự @ chỉ dùng cho biến người dùng (user-defined variables).
Cú pháp đúng cho biến người dùng
SET @ten_bien = gia_tri;
Ví dụ minh họa
Tạo Stored Procedure nhận tham số IN StudentName, gán vào biến @Name:
mysql> DELIMITER //
mysql> CREATE PROCEDURE declare_Variable(IN StudentName VARCHAR(100))
BEGIN
SET @Name = StudentName;
SELECT @Name;
END //
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;
Gọi Stored Procedure:
mysql> CALL declare_Variable('John Smith');
Kết quả:
+------------+ | @Name | +------------+ | John Smith | +------------+ 1 row in set (0.00 sec)
Quy tắc tóm tắt
| Loại | Cú pháp | Ví dụ |
|---|---|---|
| Tham số SP | Không có @ | IN param_name VARCHAR(100) |
| Biến cục bộ (DECLARE) | Không có @ | DECLARE var_name INT; |
| Biến người dùng (Session) | Có @ | SET @var_name = 10; |
Lưu ý: Biến người dùng (@...) tồn tại trong suốt session, khác với biến cục bộ (DECLARE) chỉ tồn tại trong block BEGIN...END.