lima-city: Webhosting, Domains und Cloud
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 (397 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 (720 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

265 Kommentare

14 Nutzer