怎么说如果在MySQL中不存在创建过程

时间:2012-03-30 18:42:26

标签: mysql stored-procedures exists

我正在尝试编写一个脚本来在MySQL数据库中创建一个过程,但是我想先检查它是否存在。

我知道如何为表执行此操作,但是当我对存储过程使用相同的语法时,它不会编译。

有人知道吗?感谢

4 个答案:

答案 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() 开始 ... 结束