как сказать создать процедуру, если не существует в MySQL - PullRequest
21 голосов
/ 30 марта 2012

Я пытаюсь написать сценарий для создания процедуры в базе данных MySQL, но я хочу проверить, выполняется ли она сначала.

Я знаю, как это сделать для таблицы, но когда я использую ееСинтаксис хранимой процедуры не компилируется.

Кто-нибудь знает?Спасибо

Ответы [ 3 ]

25 голосов
/ 10 июня 2015

Просто удалите процедуру, если она существует, а затем добавьте ее снова:

DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure()
9 голосов
/ 30 марта 2012
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;
3 голосов
/ 30 марта 2012

Не существует. Нам пришлось написать хранимую процедуру, которая имитирует ту же функциональность. По сути, мы создаем хранимые процедуры, вызывая хранимую процедуру, которая выполняет проверку «если существует».

...