MySQL/MariaDB: 无法使用 case 语句创建过程

MySQL/MariaDB: Can't create a procedure using the case statement

我正在努力处理 MySQL 的案例陈述。我想在过程中使用它,但出现错误(#1064 - 你的 SQL 语法有错误;请查看与你的 MariaDB 服务器版本对应的手册,了解在 '' 附近使用的正确语法在第 4 行)每次我尝试创建过程时。我使程序尽可能简单,以避免出现与案例陈述无关的其他错误。这就是我目前正在尝试的:

drop PROCEDURE if EXISTS test;
create PROCEDURE test()
BEGIN
CASE
when true THEN INSERT INTO testtable VALUES (DEFAULT);
end case;
END

真不知道哪里错了。手册说语法是这样的:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list] 
END CASE

我想我做的完全一样。 我希望有人能帮助我。我现在挣扎了几个小时。 顺便说一句:我正在使用 XAMPP 和 PHPMyAdmin

您需要更改分隔符,否则它不知道您的存储过程何时结束,而不是过程中的语句

如果您 运行 来自控制台:

drop PROCEDURE if EXISTS test;

delimiter $$

create PROCEDURE test()
BEGIN
CASE
when true THEN INSERT INTO testtable VALUES (DEFAULT);
end case;
END$$

delimiter ;

如果你 运行 它在 phpmyadmin 中,那么你必须用他们的 GUI 指定分隔符: