अगर हमारे पास ALTER ROUTINE विशेषाधिकार हैं तो हम ALTER FUNCTION क्वेरी की मदद से MySQL के स्टोर किए गए फंक्शन को बदल सकते हैं। इसका सिंटैक्स इस प्रकार है -
सिंटैक्स
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 क्वेरी से, यह स्पष्ट है कि टिप्पणी को फ़ंक्शन 'फैक्टोरियल' की परिभाषा में जोड़ा गया है।