web-dev-qa-db-ja.com

MySQLに存在しない場合、create procedureを言う方法

MySQLデータベースにプロシージャを作成するスクリプトを記述しようとしていますが、それが最初に存在するかどうかを確認したいと思います。

テーブルでそれを行う方法を知っていますが、ストアドプロシージャに同じ構文を使用すると、コンパイルできません。

誰か知っていますか?ありがとう

24
Frank

プロシージャが存在する場合は削除して、再度追加します。

DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure()
31
Cory Klein
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;
10
Ben English

それは存在しません。同じ機能を模倣するストアドプロシージャを作成する必要がありました。基本的に、「存在する場合」チェックを行うストアドプロシージャを呼び出すことによって、ストアドプロシージャを作成します。

4
robertvoliva