在SQL Server中我能够使用动态sql字符串来实现这一点,但是现在我需要为mysql做同样的事情,但是我无处可去,有没有办法实现这个
IF NOT EXISTS (SELECT 1 FROM mysql.proc p WHERE NAME = 'stored_proc_name')
BEGIN
DELIMITER $$
CREATE PROCEDURE justATest()
BEGIN
-- some SP logic here
END$$
END
我将整个sql作为字符串存储在数据库列中,并使用另一个存储过程中的预准备语句Execute
执行该语句。
答案 0 :(得分:0)
IF NOT EXISTS(SELECT 1 from mysql.proc p WHERE db ='db_name'AND name ='stored_proc_name')THEN ....
取自
答案 1 :(得分:0)
只有if then的控制语句才允许在MySQL中的存储过程中使用(不幸的是)。通常有这种方法,但它取决于为什么你有条件地创建了sproc。
E.g。如果您在运行构建脚本时尝试避免错误,因为sprocs已经存在,那么您可以在创建之前使用条件drop语句,如下所示:
DROP PROCEDURE IF EXISTS justATest;
CREATE PROCEDURE justATest()
BEGIN
-- enter code here
END;
这将确保运行任何更改的代码(而不是跳过)。