2012-03-30 21 views
17

我想寫一個腳本來在MySQL數據庫中創建一個過程,但是我想檢查它是否先存在。如何在MySQL中不存在創建過程

我知道如何做一個表,但是當我使用存儲過程相同的語法時,它不會編譯。

有人知道嗎?謝謝

回答

3

它不存在。我們必須編寫一個模仿相同功能的存儲過程。基本上我們通過調用執行「if exists」檢查的存儲過程來創建存儲過程。

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; 
+0

我的MySQL查詢辯稱 「END IF;」 - 我必須刪除這條線。 – Zon 2013-11-12 08:52:58

18

剛落的過程,如果它確實存在,然後重新添加:

DROP PROCEDURE IF EXISTS my_procedure; 

CREATE PROCEDURE my_procedure() 
... 
+0

它說的語法錯誤。 – 2016-11-22 04:28:43