web-dev-qa-db-fra.com

comment dire créer une procédure si elle n'existe pas dans MySQL

J'essaie d'écrire un script pour créer une procédure dans la base de données MySQL, mais je veux vérifier si elle existe en premier.

Je sais comment le faire pour une table, mais lorsque j'utilise la même syntaxe pour la procédure stockée, elle ne se compile pas.

Est-ce que quelqu'un sait? Merci

24
Frank

Supprimez simplement la procédure si elle existe, puis ajoutez-la à nouveau:

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');

Vous pourriez donc faire:

IF NOT EXISTS(SELECT 1 FROM mysql.proc p WHERE db = 'db_name' AND name = 'stored_proc_name') THEN
....
END IF;
10
Ben English

Ça n'existe pas. Nous avons dû écrire une procédure stockée qui imite la même fonctionnalité. Fondamentalement, nous créons des procédures stockées en appelant une procédure stockée qui effectue la vérification "si existe".

4
robertvoliva