存储过程中的case语句

时间:2012-07-14 10:53:30

标签: mysql stored-procedures case-when

我有这个存储过程,它的工作

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语句的案例”

有人知道,为什么?

1 个答案:

答案 0 :(得分:3)

来自MySQL CASE syntax

  

如果没有when_value或search_condition匹配测试的值和   CASE语句不包含ELSE子句,CASE未找到案例   声明错误结果。

您必须涵盖所有选项。

MySQL手册是伟大的文档。一定要去看看!