Po zapoznaniu się z Twoim komentarzem dotyczącym poprawionego oświadczenia, ale natychmiastowego drugiego problemu, stało się jasne, że nie używasz tego w ramach procedury składowanej lub funkcji. Dokumentacja instrukcje kontroli przepływu
bardzo subtelnie stwierdza, że muszą znajdować się w procedurach/funkcjach składowanych.
Zaktualizuj swój kod, aby znajdował się w procedurze, a następnie wywołaj procedurę do wykonania:
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();
Zwróć też uwagę, że dodałem łapiące wszystko ELSE
blok; jeśli nie złapiesz wartości, CASE
wyświetli ostrzeżenie „Nie znaleziono sprawy” – co może być pożądane lub nie.