我正在尝试编写一个脚本来在MySQL数据库中创建一个过程,但是我想先检查它是否存在。
我知道如何为表执行此操作,但是当我对存储过程使用相同的语法时,它不会编译。
有人知道吗?感谢
答案 0 :(得分:25)
如果程序确实存在则删除该程序,然后重新添加:
DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure()
答案 1 :(得分:9)
SELECT EXISTS(SELECT 1 FROM mysql.proc p WHERE db = 'db_name' AND name = 'stored_proc_name');
所以你可以这样做:
IF NOT EXISTS(SELECT 1 FROM mysql.proc p WHERE db = 'db_name' AND name = 'stored_proc_name') THEN
....
END IF;
答案 2 :(得分:3)
它不存在。我们必须编写一个模仿相同功能的存储过程。基本上,我们通过调用执行“if exists”检查的存储过程来创建存储过程。
答案 3 :(得分:0)
只需调用程序
CALL my_procedure();
如果您收到特定错误
<块引用>PROCEDURE yourDB.my_procedure 不存在
您现在可以对“错误代码:1305”做出反应并创建丢失的程序:
创建程序 my_procedure() 开始 ... 结束