我有这个存储过程,它的工作
CREATE PROCEDURE myrange()
BEGIN
SET @start = 0;
PREPARE stmt FROM ' SELECT firstname FROM peoples ORDER BY id LIMIT ?,1 INTO @name';
WHILE @start < 5 DO
EXECUTE stmt USING @start;
CASE
WHEN @name = 'Ana'
THEN INSERT INTO mytable (log) VALUES('yes');
ELSE
INSERT INTO mytable (log) VALUES('no');
END CASE;
SET @start = @start + 1;
END WHILE;
END;
但是,如果我从这个程序中删除了这段代码:
ELSE
INSERT INTO mytable (log) VALUES('no');
mysqli_error()返回此错误:“找不到CASE语句的案例”。
有人知道,为什么?
答案 0 :(得分:3)
如果没有when_value或search_condition匹配测试的值和 CASE语句不包含ELSE子句,CASE未找到案例 声明错误结果。
您必须涵盖所有选项。
MySQL手册是伟大的文档。一定要去看看!