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