UPDATE `mysql`.`proc`
SET name = '<new_proc_name>',
specific_name = '<new_proc_name>'
WHERE db = '<database>' AND
name = '<old_proc_name>';
若为某用户赋予了该存储过程的上的一些权限,则可能还需更新`mysql`.`procs_priv`表中相应的信息:
UPDATE `mysql`.`procs_priv`
SET Routine_name = '<new_proc_name>'
WHERE Db = '<database>' AND
Routine_name = '<old_proc_name>';
FLUSH PRIVILEGES;
SET name = '<new_proc_name>',
specific_name = '<new_proc_name>'
WHERE db = '<database>' AND
name = '<old_proc_name>';
若为某用户赋予了该存储过程的上的一些权限,则可能还需更新`mysql`.`procs_priv`表中相应的信息:
UPDATE `mysql`.`procs_priv`
SET Routine_name = '<new_proc_name>'
WHERE Db = '<database>' AND
Routine_name = '<old_proc_name>';
FLUSH PRIVILEGES;
当然也可以先依据原来的procedure创建新的procedure,再根据原来的procedure给新的procedure赋权限,最后删除原来的procedure。