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

ความหมายและการใช้งานสัญลักษณ์ @ ใน MySQL Stored Procedure

สัญลักษณ์ @ ใน MySQL: User-Defined Session Variables

สัญลักษณ์ @ ใน MySQL ใช้สำหรับประกาศ **ตัวแปรระดับเซสชัน (User-Defined Session Variables)** ซึ่งแตกต่างจากตัวแปรภายในโปรแกรม (Local Variables) ที่ประกาศด้วย DECLARE

ความแตกต่างระหว่าง @variable และ DECLARE variable

ลักษณะ@variable (Session Variable)DECLARE variable (Local Variable)
ขอบเขต (Scope)ทั้งเซสชัน (Session)เฉพาะใน Stored Procedure/Function
การประกาศไม่ต้อง DECLARE ใช้ได้เลยต้อง DECLARE ที่ส่วน BEGIN
อายุการใช้งานจบเมื่อเซสชันสิ้นสุดจบเมื่อ Procedure ทำงานเสร็จ
การเข้าถึงเข้าถึงได้จากภายนอก Procedureเข้าถึงได้เฉพาะใน Procedure

ตัวอย่างการใช้งาน @ ใน Stored Procedure

1. สร้างตารางและเพิ่มข้อมูล

CREATE TABLE DemoTable (
    StudentName VARCHAR(50)
);

INSERT INTO DemoTable VALUES ('John Smith');
INSERT INTO DemoTable VALUES ('John Doe');
INSERT INTO DemoTable VALUES ('Chris Brown');

2. สร้าง Stored Procedure ที่ใช้ @variable

DELIMITER //
CREATE PROCEDURE `Demo_Of_@Symbol`()
BEGIN
    SELECT COUNT(*) INTO @numberOfRecords FROM DemoTable;
END //
DELIMITER ;

3. เรียกใช้ Procedure และอ่านค่า @variable

CALL `Demo_Of_@Symbol`();
SELECT @numberOfRecords;

ผลลัพธ์:

+------------------+
| @numberOfRecords |
+------------------+
| 3                |
+------------------+

กรณีการใช้งานที่พบบ่อย

  • ส่งค่าระหว่าง Stored Procedures ต่างๆ ในเซสชันเดียวกัน
  • เก็บค่าชั่วคราวเพื่อใช้ในคำสั่ง SQL ต่อไป
  • Debugging: ตรวจสอบค่าระหว่างการทำงานของ Procedure

ข้อควรระวัง

  • ชื่อตัวแปร @ ต้องไม่ซ้ำกับคำสำคัญ (Reserved Keywords)
  • ค่าเริ่มต้นคือ NULL หากไม่ได้กำหนดค่า
  • ไม่ควรใช้แทน Local Variable ในกรณีที่ไม่จำเป็นต้องแบ่งปันค่า