Après avoir examiné votre commentaire concernant l'instruction fixe mais le deuxième problème immédiat, il était clair que vous ne l'utilisiez pas dans une procédure stockée ou une fonction. La documentation pour flow control statements
indique très subtilement qu'ils doivent se trouver dans des procédures/fonctions stockées.
Mettez à jour votre code pour qu'il soit dans une procédure, puis appelez simplement la procédure à exécuter :
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();
Notez également que j'ai ajouté un attrape-tout ELSE
bloquer; si vous ne saisissez pas la valeur, CASE
lancera un avertissement "Case not found" - ce qui peut être souhaitable ou non.