Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co jest nie tak z moją składnią MySQL CASE/WHEN?

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Długie migracje Django 1.7 nigdy się nie kończą

  2. MySql REGEXP, aby dopasować dwa ciągi oddzielone przecinkami

  3. java.sql.SQLSyntaxErrorException:Nieznana kolumna .JPA Entity Problem?

  4. Jak uzyskać kolejny rekord w zbiorze wyników mysql?

  5. Jak wybrać datę z kolumny datetime?