Menu

Wednesday, April 8, 2020

[Database - MySQL] วิธีการแก้ปัญหา Syntax Error เมื่อทำการสร้าง Procedure
[Database - MySQL] How to Fix Syntax Error when Creating a Procedure

สมมติว่า เราต้องการสร้าง procedure ด้วย SQL statement ข้างล่างนี้
CREATE PROCEDURE `my_procedure` (IN `_year` INT, IN `_month` INT)
    NO SQL
BEGIN
    SELECT * FROM my_table WHERE year = `_year`and month = `_month`;
END;
อย่างไรก็ตาม statement นี้ไม่สามารถรันได้ทุกฐานข้อมูล

บางฐานข้อมูลจะแสดงข้อผิดพลาดตามรูปข้างล่างนี้


สาเหตุของข้อผิดพลาดนี้ คือ บางฐานข้อมูลใช้ ; (semi-colon) ในการแบ่ง statement ทำให้ statement ข้างบนถูกตัดออกเป็น 2 ส่วน เป็นที่มาของ Syntax Error นั่นเอง

วิธีแก้ไข คือ เปลี่ยนอักขระพิเศษที่ใช้แบ่ง statement ไปเป็นตัวอื่นก่อนถึง statement สำหรับสร้าง procedure และเปลี่ยนกลับไปเป็น ; (semi-colon) หลังจากจบ statement นั้น ตามตัวอย่างข้างล่างนี้
DELIMITER //
CREATE PROCEDURE `my_procedure` (IN `_year` INT, IN `_month` INT)
    NO SQL
BEGIN
    SELECT * FROM my_table WHERE year = `_year`and month = `_month`;
END;
//
DELIMITER ;

No comments:

Post a Comment