在mysql中创建存储过程之前是否存在检查存储过程

时间:2015-10-29 12:57:20

标签: mysql stored-procedures

要求:Maven配置文件应该有一个目录路径,在运行我的maven配置文件后,应该在我的数据库中创建该目录中的所有sql文件(存储过程)。

注意:目录中的sql文件有可能增加,所以如果添加新文件,我应该只运行该文件,而不是运行所有文件。

问题:无法使用IF NOT EXISTS检查过程是否存在,当我在创建存储过程之前将其添加到我的sql文件中时,它会给我语法错误。

我尝试使用

IF NOT EXISTS(SELECT  * FROM mysql.proc WHERE name='procedure_1001') THEN
    BEGIN
        CREATE DEFINER=`root`@`localhost` PROCEDURE `procedure_1001`()
        BEGIN
        // logic
        END
    END
END IF;

1 个答案:

答案 0 :(得分:0)

检查ROUTINES表,如下所示:

SELECT count(*) > 0
into @myvar 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE 
       ROUTINE_TYPE='PROCEDURE' 
   AND ROUTINE_SCHEMA='dbname'
   AND ROUTINE_NAME = 'procedure_1001'
;

然后再使用@myvar。如果为1,则运行该过程。