2012-07-14 204 views
1

我有这个存储过程,其工作case语句

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语句未找到案例”

有人知道,为什么?

回答

3

MySQL CASE syntax

If no when_value or search_condition matches the value tested and the CASE statement contains no ELSE clause, a Case not found for CASE statement error results.

您必须覆盖所有选项。

MySQL手册是伟大的文档。一定要访问它!

+0

+1 - 这肯定不同于SQL Server,我不知道。 – 2012-07-14 12:38:58

+0

供应商之间可能会有不同的东西。你必须始终敏锐地认出他们。 – 2012-07-14 12:40:54

+0

...甚至与一个产品的版本差异。它似乎使用MySQL 5.5.25 * *允许它。 – 2012-07-14 12:44:22