Efter at have gennemgået din kommentar vedrørende den faste erklæring, men det øjeblikkelige andet problem, var det klart, at du ikke bruger dette i en lagret procedure eller funktion. Dokumentationen til flowkontroludsagn
meget subtilt angiver, at de skal være inden for lagrede procedurer/funktioner.
Opdater din kode til at være inden for en procedure, og kald derefter bare proceduren for at udføre:
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();
Bemærk også, at jeg tilføjede en catch-all ELSE
blok; hvis du ikke fanger værdien, CASE
vil kaste en "Sag ikke fundet" advarsel - hvilket kan være ønskeligt eller måske ikke.