我们如何更改MySQL存储功能?
如果我们拥有ALTERROUTINE特权,那么我们可以借助ALTERFUNCTION查询更改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是我们要更改的函数的名称。
ALTERFUNCTION语句可以更改上面在语法中定义的存储函数的特征。我们可以在ALTERFUNCTION语句中指定多个更改。但是我们不能使用此语句更改参数或函数主体。为了说明这一点,我们在以下示例中在函数名称“factorial”中添加注释-
示例
mysql> ALTER FUNCTION factorial COMMENT 'Can accept fraction values';
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)从CREATFUNCTION查询中,很明显,注释已添加到函数“阶乘”的定义中。