我们怎样才能改变 MySQL 存储函数?
如果我们有 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 查询中可以清楚地看到,已将注释添加到函数“阶乘”的定义中。
广告