Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách khắc phục lỗi 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?"


Nguyên nhân và giải pháp

Lỗi cú pháp SQL này thường xảy ra khi làm việc với stored procedure, trigger hoặc function trong MySQL. Nguyên nhân chính là do dấu phân cách câu lệnh mặc định là dấu chấm phẩy (;) xung đột với các câu lệnh bên trong thủ tục lưu trữ.

Giải pháp: Thay đổi Delimiter

Bạn cần thay đổi delimiter từ ; sang // (hoặc ký tự khác không xung đột) trước khi tạo thủ tục, sau đó đổi lại.

Cú pháp cơ bản

DELIMITER // 
CREATE PROCEDURE ten_thu_tuc() 
BEGIN 
    Cau_lenh_1; 
    -- ... 
    Cau_lenh_N; 
END; 
// 
DELIMITER ;

Ví dụ minh họa

Tạo stored procedure lấy tất cả bản ghi từ bảng employeetable:

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

Gọi thủ tục lưu trữ

Sử dụng lệnh CALL:

CALL ten_thu_tuc();

Ví dụ gọi procedure vừa tạo:

mysql> CALL sp_getAllRecords();

Kết quả đầu ra

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

Lưu ý quan trọng

  • Luôn khôi phục delimiter về ; sau khi tạo xong thủ tục
  • Khi gọi procedure, MySQL tự hiểu delimiter là ; nên không cần thay đổi
  • Áp dụng tương tự cho TRIGGER và FUNCTION