2012-07-14 170 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