2012-03-30 9 views
17

私は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クエリが主張する "IF END;" - 私はこの行を削除しなければならなかった。 – Zon

18

ちょうどプロシージャを削除:

DROP PROCEDURE IF EXISTS my_procedure; 

CREATE PROCEDURE my_procedure() 
... 
+0

構文エラーです。 –

関連する問題