1

私はこのストアドプロシージャを持っています、その動作

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ステートメントのケースが見つかりません」

誰かが知っている、なぜ?

4

1 に答える 1

3

MySQLCASE構文から

when_valueまたはsearch_conditionがテストされた値と一致せず、CASEステートメントにELSE句が含まれていない場合、CASEステートメントのケースが見つかりませんというエラーが発生します。

すべてのオプションをカバーする必要があります。

MySQLマニュアルは優れたドキュメントです。ぜひご覧ください!

于 2012-07-14T12:16:49.890 に答える