หากเรามีสิทธิ์ใน ALTER ROUTINE เราก็สามารถเปลี่ยนฟังก์ชันที่จัดเก็บไว้ของ MySQL ด้วยความช่วยเหลือของคำสั่ง ALTER FUNCTION ไวยากรณ์ของมันคือ −
ไวยากรณ์
ALTER FUNCTION function_name [characteristic ...] characteristic: { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'
ที่นี่ function_name คือชื่อฟังก์ชันที่เราอยากแก้ไข
คำสั่ง ALTER FUNCTION สามารถเปลี่ยนคุณลักษณะที่กำหนดไว้ข้างต้นในไวยากรณ์ของฟังก์ชันที่เก็บไว้ได้ เราสามารถระบุการเปลี่ยนแปลงมากกว่าหนึ่งรายการในคำสั่ง ALTER FUNCTION แต่เราไม่สามารถเปลี่ยนพารามิเตอร์หรือเนื้อหาของฟังก์ชันด้วยคำสั่งนี้ได้ เพื่อแสดงให้เห็น เรากำลังเพิ่มความคิดเห็นในชื่อฟังก์ชัน 'แฟกทอเรียล' ในตัวอย่างต่อไปนี้ -
ตัวอย่าง
mysql> ALTER FUNCTION factorial COMMENT 'Can accept fraction values'; Query OK, 0 rows affected (0.00 sec) mysql> Show Create Function factorial\G *************************** 1. row *************************** Function: factorial sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `factorial`(n DECIMAL(3,0)) RETURNS decimal(20,0) DETERMINISTIC COMMENT 'Can accept fraction values' BEGIN DECLARE factorial DECIMAL(20,0) DEFAULT 1; DECLARE counter DECIMAL(3,0); SET counter = n; factorial_loop: REPEAT SET factorial = factorial * counter; SET counter = counter - 1; UNTIL counter = 1 END REPEAT; RETURN factorial; END character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci 1 row in set (0.00 sec)
จากแบบสอบถาม CREAT FUNCTION จะเห็นได้ชัดเจนว่าเพิ่มความคิดเห็นลงในคำจำกัดความของฟังก์ชัน 'factorial' แล้ว