กฎการใช้ @ ใน MySQL: ตัวแปรผู้ใช้ (User-defined Variables) เท่านั้น
ใน MySQL ไม่สามารถใช้ @ นำหน้าพารามิเตอร์ของ Stored Procedure ได้โดยตรง เครื่องหมาย @ ใช้สำหรับ **User-defined Variables** (ตัวแปรที่ผู้ใช้กำหนดเอง) เท่านั้น
Syntax ที่ถูกต้องสำหรับ User-defined Variable
SET @yourVariableName = yourValue;
ตัวอย่างการใช้งานใน Stored Procedure
สร้าง Procedure ที่รับพารามิเตอร์ปกติ (ไม่มี @) แล้วกำหนดให้ User Variable:
mysql> DELIMITER //
mysql> CREATE PROCEDURE declare_Variable(IN StudentName VARCHAR(100))
BEGIN
SET @Name = StudentName; -- กำหนดค่าให้ User Variable
SELECT @Name; -- แสดงค่า User Variable
END //
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;
เรียกใช้ Procedure:
mysql> CALL declare_Variable('John Smith');
+------------+ | @Name | +------------+ | John Smith | +------------+ 1 row in set (0.00 sec)
สรุปความแตกต่าง
| ประเภท | รูปแบบ | ใช้ได้ใน |
|---|---|---|
| Procedure Parameter | IN paramName TYPE | ภายใน Procedure |
| User-defined Variable | @varName | Session ปัจจุบัน (ข้าม Procedure ได้) |
| Local Variable | DECLARE varName TYPE | ภายใน BEGIN...END เท่านั้น |
ข้อแนะนำ
- อย่าใส่
@นำหน้าพารามิเตอร์ในCREATE PROCEDURE - ใช้
SET @var = valueเพื่อส่งค่าระหว่าง Procedure หรือเก็บค่าชั่วคราว - User Variable จะคงค่าตลอด Session จนกว่าจะ Disconnect