Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво не е наред с моя MySQL CASE/WHEN синтаксис?

След преглед на коментара ви относно фиксирания оператор, но незабавен втори проблем, стана ясно, че не използвате това в съхранена процедура или функция. Документацията за изявления за контрол на потока много фино заявява, че те трябва да бъдат в съхранени процедури/функции.

Актуализирайте кода си, за да бъде в рамките на процедура, и след това просто извикайте процедурата за изпълнение:

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();

Също така имайте предвид, че добавих ELSE за обхващане на всички блок; ако не хванете стойността, CASE ще изведе предупреждение „Случаят не е намерен“ – което може или не може да е желателно.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:ГРЕШКА 1227 (42000):Достъпът е отказан - не може да се СЪЗДАВА ПОТРЕБИТЕЛ

  2. Заменете дума в BLOB текст с MySQL

  3. Възможно ли е да скриете паролата в MySQL General/Slow Query Logs?

  4. MySQL:Общо ГРУПИРАНЕ С РЪКОВОДНО любопитство

  5. MySQL избира форматирана дата от полето за милисекунди