Gibt es eine Alternative zu "Prozedur erstellen oder ersetzen" in MySQL?

15

Gibt es eine Version von "create or replace procedure" für MySQL? Ich kann dies nicht tun oder das Löschen der Prozedur per Skript ausführen, wenn dies vor dem erneuten Kompilieren vorhanden ist, ohne eine Fehlermeldung zu erhalten, dass die gespeicherte Prozedur vorhanden ist.

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 $$
amatusko
quelle

Antworten:

20

Dies ist die Syntax zum Löschen, falls vorhanden

DROP PROCEDURE IF EXISTS db.sp_tmp_90days;
Rohit Gupta
quelle
3
Könnte auch erwähnen, dass MariaDB, ein "Drop-In-Ersatz" für MySQL, die CREATE OR REPLACE PROCEDURESyntax seit Version 10.1 unterstützt.
Dbdemon