Nachdem Sie Ihren Kommentar zur behobenen Anweisung, aber zum unmittelbar zweiten Problem überprüft hatten, war klar, dass Sie dies nicht innerhalb einer gespeicherten Prozedur oder Funktion verwenden. Die Dokumentation für flow control statements
gibt sehr subtil an, dass sie in gespeicherten Prozeduren/Funktionen enthalten sein müssen.
Aktualisieren Sie Ihren Code so, dass er sich in einer Prozedur befindet, und rufen Sie dann einfach die auszuführende Prozedur auf:
USE mysql;
DROP PROCEDURE p;
DELIMITER |
CREATE PROCEDURE p() BEGIN
CASE (SELECT COUNT(*) FROM user WHERE User = '' AND Host = 'localhost')
WHEN 1 THEN
DROP USER ''@'localhost';
FLUSH PRIVILEGES;
ELSE
SELECT 'no users found!';
END CASE;
END;
|
CALL p();
Beachten Sie auch, dass ich einen Catch-all ELSE
hinzugefügt habe Block; wenn Sie den Wert nicht abfangen, CASE
wird eine "Fall nicht gefunden"-Warnung ausgeben - was wünschenswert sein kann oder nicht.