Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การใช้ @ ใน Stored Procedure Parameter ของ MySQL: ทำไมไม่ได้และวิธีแก้

กฎการใช้ @ ใน 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 ParameterIN paramName TYPEภายใน Procedure
User-defined Variable@varNameSession ปัจจุบัน (ข้าม Procedure ได้)
Local VariableDECLARE varName TYPEภายใน BEGIN...END เท่านั้น

ข้อแนะนำ

  • อย่าใส่ @ นำหน้าพารามิเตอร์ใน CREATE PROCEDURE
  • ใช้ SET @var = value เพื่อส่งค่าระหว่าง Procedure หรือเก็บค่าชั่วคราว
  • User Variable จะคงค่าตลอด Session จนกว่าจะ Disconnect