Frank (no reg): MySQL Datenbank mit Login-System.

Beitrag lesen

Hi,

hast du eventuell mal den Rat befolgt, den dir Mysql als Teil der Fehlermeldung ausgibt?

check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$

Also was tut dieses DELIMITER Zeugs? Und kann man das ganze vielleicht auch ohne selbiges ausführen? Also nur

CREATE PROCEDURE Test.Anmelden(IN BenutzerName CHAR(32), IN Passwort CHAR(32), OUT Angemeldet BOOL)
BEGIN
 DECLARE erfolg BOOL DEFAULT FALSE;
 DECLARE passw CHAR(32);
 SELECT Passwort INTO passw FROM Test.t_Benutzer WHERE Name=BenutzerName;
 IF passw=Passwort THEN
  erfolg=TRUE;
 END IF;
 SELECT erfolg INTO Angemeldet;
END

Ausserdem kannst du doch gleich so schreiben (denke ich mal)

SELECT TRUE INTO erfolg
  FROM Test.t_Benutzer
  WHERE Test.t_Benutzer.Name =BenutzerName AND
               Test.t_Benutzer.Passwort=Passwort

Wenn es da kein Match gibt sollte auch kein TRUE in deine Erfolgsvariable geschrieben werden.

Allerdings finde ich die Variablennotation etwas doppeldeutig. Die Variable für Passwort heisst "Passwort" und die Spalte auch? Gibt das nicht evendudel Probleme?

Gruss, Frank