删除MySQL中的所有存储过程或使用临时存储过程

Ken*_*hoi 17 mysql stored-procedures

是否有一个声明可以删除MySQL中的所有存储过程?或者(如果第一个不可能),MySQL中是否存在临时存储过程?类似于临时表的东西?

use*_*300 23

我本以为会这样做,但我愿意改正:

(已编辑以包含评论中提供的优点)

delete from mysql.proc WHERE db LIKE <yourDbName>;
Run Code Online (Sandbox Code Playgroud)

(正如Balmipour在下面的评论中指出的那样,指定数据库是个好主意.)

我认为想要删除给定数据库中的所有过程是有效的,否则在漫长的开发周期中存在过时的过程和函数累积并使所有事情变得混乱的危险.


Iva*_*sen 21

由于DROP PROCEDURE和DROP FUNCTION不允许子选择,我认为可能通过另一个存储过程执行操作,但唉,MySQL不允许存储过程丢弃其他存储过程.

无论如何,我试图通过创建预准备语句来欺骗MySQL,从而将drop调用与存储过程分开,但我没有运气.

因此,我唯一的贡献是这个select语句,它创建了删除所有存储过程和函数所需的语句列表.

SELECT
    CONCAT('DROP ',ROUTINE_TYPE,' `',ROUTINE_SCHEMA,'`.`',ROUTINE_NAME,'`;') as stmt
FROM information_schema.ROUTINES;
Run Code Online (Sandbox Code Playgroud)

  • 这将为所有可用的数据库模式创建掉落功能.小心使用! (5认同)

Lev*_*ron 11

这似乎放弃了程序......但不确定其含义

DELETE FROM mysql.proc WHERE db = 'Test' AND type = 'PROCEDURE';
Run Code Online (Sandbox Code Playgroud)