Existe-t-il une alternative à «Créer ou remplacer une procédure» dans MySQL?


16

Existe-t-il une version de "créer ou remplacer la procédure" pour MySQL? Je n'arrive pas à faire cela ou à écrire la suppression de la procédure si elle existe avant de recompiler sans obtenir un message d'erreur indiquant que la procédure stockée existe.

DELIMITER $$

-- would love to be able to drop procedure if exists db.sp_tmp_90days;  
-- or use "create or replace"

create procedure db.sp_tmp_90days()

BEGIN
drop table db.tmp_90days;

create table db.tmp_90days ( 
    user_name varchar(128), 
    first_name varchar(50), 
    last_name varchar(50), 
    system varchar(10), 
    last_login datetime 
);

alter table db.tmp_90days add index idx_user_name(user_name);
alter table db.tmp_90days add index idx_system(system);
alter table db.tmp_90days add index idx_last_login(last_login);

insert into db.tmp_90days (user_name, first_name, last_name, system, last_login)
    SELECT
        [...]
END $$

Réponses:


20

C'est la syntaxe pour la supprimer si elle existe

DROP PROCEDURE IF EXISTS db.sp_tmp_90days;

3
Pourrait également mentionner que MariaDB, un "remplacement de remplacement" pour MySQL, prend en charge la CREATE OR REPLACE PROCEDUREsyntaxe depuis la version 10.1.
dbdemon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.