重命名一个mysql存储过程

18

有人知道如何重命名MySQL存储过程/函数的语法吗?或者MySQL是否支持这个功能?我已经搜索了几分钟...


1
这是一个文档记录的解决方法,可以在这里找到:http://forums.mysql.com/read.php?10,274538,274563#msg-274563。关于重命名存储过程的方法可以在这里找到:http://www.youdidwhatwithtsql.com/rename-mysql-stored-procedures/819。根据2007年提交的功能请求,似乎仍然没有得到解决,如果这个问题仍然有效的话,可以在这里查看:http://bugs.mysql.com/bug.php?id=27793。 - Anthill
1个回答

27

试试这个

 UPDATE `mysql`.`proc`
SET name = '<new_proc_name>',
specific_name = '<new_proc_name>'
WHERE db = '<database>' AND
  name = '<old_proc_name>';

注意:如果您已经授予用户此存储过程的权限,则还需要在procs_priv中更新存储过程名称。

UPDATE `mysql`.`procs_priv`
SET Routine_name = '<new_proc_name>'
WHERE Db = '<database>' AND
  Routine_name = '<old_proc_name>';
 FLUSH PRIVILEGES;

来源: MySQL论坛 :: 新手 :: 重命名存储过程语法


更改该表需要特定的权限吗? - Ferenc Deak
有没有一种语句的变体,您不需要指定数据库名称,只需使用活动数据库? - Gruber
@Gruber,是的 - 只需使用函数DATABASE()获取当前数据库名称,并将其附加为条件:UPDATE mysql.proc SET name = ...,specific_name = ... WHERE name = ... AND db = DATABASE() - crishoj
同时不要忘记更改存储过程的调用事件: 在计划的每60秒执行一次的事件_RunSP1上进行更改,调用<new_proc_name>。 - Mohsen Abasi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接