sql >> Databasteknik >  >> RDS >> Mysql

Vad är det för fel på min MySQL CASE/NÄR syntax?

Efter att ha granskat din kommentar angående det fasta uttalandet men omedelbart andra problem, stod det klart att du inte använder detta inom en lagrad procedur eller funktion. Dokumentationen för flödeskontrolluttalanden säger mycket subtilt att de måste vara inom lagrade procedurer/funktioner.

Uppdatera din kod så att den ligger inom en procedur och anropa sedan proceduren för att exekvera:

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

Observera också att jag lade till en catch-all ELSE blockera; om du inte fångar värdet, CASE kommer att skicka en "Case not found"-varning - vilket kanske är önskvärt eller inte.




  1. NextForm v3:Fem alternativ för data- och databasmigrering

  2. Öppnar Android Sqlite Database i Fragment

  3. Infoga standardvärde när null infogas

  4. fel med oci_fetch_array, kan hämta data från oracle med php