Depois de revisar seu comentário sobre a instrução corrigida, mas o segundo problema imediato, ficou claro que você não está usando isso em um procedimento ou função armazenado. A documentação para
instruções de controle de fluxo
muito sutilmente afirma que eles precisam estar dentro de procedimentos/funções armazenados. Atualize seu código para estar dentro de um procedimento e, em seguida, basta chamar o procedimento para executar:
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();
Observe também que adicionei um
ELSE
abrangente quadra; se você não pegar o valor, CASE
lançará um aviso de "Caso não encontrado" - o que pode ou não ser desejável.