Вставка SQL: проверка ошибок

Вы смешиваете два способа использования CASE. Вы либо пишете:

CASE
    WHEN <expression1> THEN <result1>;
    WHEN <expression2> THEN <result2>;
    ...
END CASE

Это оценивает каждое выражение и выполняет соответствующий результат для первого истинного. Или:

CASE <expression>
    WHEN <val1> THEN <result1>;
    WHEN <val2> THEN <result2>;
    ...
END CASE

Это сравнивает <expression> с каждым значением и выполняет соответствующий результат для первого, который соответствует.

Вы использовали второй синтаксис, но ваши значения также содержат сравнение. Таким образом, они все либо 0 (для false), либо 1 (для true), и именно это вы сравниваете modTemp. Изменить на:

    CASE modTemp
        WHEN 1 THEN
            SELECT 1;
        WHEN 2 THEN
            SELECT 2;
        WHEN 0 THEN
            SELECT 3;
        ELSE
            SELECT CONCAT('Error: modTemp = ', modTemp);
    END CASE;
0
задан CallMeBronxy 25 February 2015 в 13:27
поделиться