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

วิธีแก้ไขข้อผิดพลาด MySQL "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near?"

สาเหตุและวิธีแก้ไขข้อผิดพลาด Syntax ใน Stored Procedure

ข้อผิดพลาด "You have an error in your SQL syntax" มักเกิดขึ้นเมื่อสร้าง Stored Procedure, Trigger หรือ Function ใน MySQL เนื่องจากเครื่องหมาย semicolon (;) ถูกนำไปใช้เป็นตัวจบคำสั่งภายในโค้ดขั้นตอน ทำให้ MySQL ตีความผิดว่าคำสั่งสิ้นสุดลงแล้ว

วิธีแก้ไข: เปลี่ยน Delimiter

ต้องเปลี่ยน delimiter จาก ; เป็น // (หรือสัญลักษณ์อื่นที่ไม่ซ้ำ) ก่อนสร้างโค้ดขั้นตอน แล้วค่อยเปลี่ยนกลับมาเป็น ; หลังจบการสร้าง

รูปแบบคำสั่ง

DELIMITER //
CREATE PROCEDURE yourProcedureName()
BEGIN
    Statement1;
    ...
    StatementN;
END //
DELIMITER ;

ตัวอย่างการสร้าง Stored Procedure

mysql> DELIMITER //
mysql> CREATE PROCEDURE sp_getAllRecords()
    -> BEGIN
    -> SELECT * FROM employeetable;
    -> END;
    -> //
Query OK, 0 rows affected (0.23 sec)
mysql> DELIMITER ;

การเรียกใช้ Stored Procedure

ใช้คำสั่ง CALL ตามรูปแบบดังนี้:

CALL yourStoredProcedureName();

ตัวอย่างการเรียกใช้งาน

mysql> CALL sp_getAllRecords();

ผลลัพธ์ที่ได้

+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 2          | Bob          | 1000           |
| 3          | Carol        | 2500           |
+------------+--------------+----------------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.02 sec)

สรุป: การเปลี่ยน delimiter เป็นขั้นตอนสำคัญเมื่อเขียน Stored Procedure, Trigger หรือ Function ใน MySQL เพื่อป้องกันข้อผิดพลาด syntax เนื่องจาก semicolon ภายในโค้ด