1 Pluspunkt 0 Minuspunkte

Ich lerne gerade Prozeduren in MySQL und habe ein Problem. Ich habe eine Prozedur erstellt

DELIMITER //

CREATE PROCEDURE test()
BEGIN
SELECT Host,User FROM user;
END //

DELIMITER ;

CALL test();

aber die ist jetzt irgendwie gespeichert. Wenn ich den Befehl aufrufe kommt nämlich die Fehlermeldung

#1304 - PROCEDURE test existiert bereits
von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Prozeduren, die du erstellst werden in einem eigenen Bereich der Datenbank gespcichert. Du kannst eine gespeicherte Prozedur mit dem DROP Befehl löschen.

DROP PROCEDURE test;
von (532 Punkte)  
0 Pluspunkte 0 Minuspunkte

Um zu überprüfen, ob eine gespeicherte Prozedur bereits existiert, kannst du die Tabelle "ROUTINES" in der Datenbank "information_schema" abfragen.

DELIMITER //

IF (
    SELECT COUNT(*)
    FROM information_schema.ROUTINES
    WHERE ROUTINE_SCHEMA = 'deine_datenbank'
      AND ROUTINE_NAME = 'test'
      AND ROUTINE_TYPE = 'PROCEDURE'
) = 0
THEN
    CREATE PROCEDURE test()
    BEGIN
        SELECT Host,User FROM user;
    END;
END IF //

DELIMITER ;
von (716 Punkte)