CREATE PROCEDURE sp_case(input_number INT)
BEGIN
DECLARE c int;
-- SELECT input_number as input_number;
-- SELECT (input_number > 0 AND input_number < 5);
SELECT 2;
-- SELECT (input_number > 5 AND input_number < 10);

CASE input_number
WHEN input_number > 0 AND input_number < 5 THEN 
SET c = 0;
WHEN input_number > 5 AND input_number < 10 THEN 
SET c = 1;
END CASE;
SELECT c;
ENDCALL sp_case(8)
结果报错: Case not found for CASE statement
select 2 也没有打印出来。

解决方案 »

  1.   

    CASE  WHEN input_number > 0 AND input_number < 5 THEN 
                SET c = 0;
    CASE WHEN input_number > 5 AND input_number < 10 THEN 
                SET c = 1;试试
      

  2.   

    mysql> delimiter //
    mysql>
    mysql> CREATE PROCEDURE sp_case(input_number INT)
        -> BEGIN
        ->     DECLARE c int;
        ->
        ->     CASE
        ->         WHEN input_number > 0 AND input_number < 5 THEN
        ->             SET c = 0;
        ->         WHEN input_number > 5 AND input_number < 10 THEN
        ->             SET c = 1;
        ->     END CASE;
        ->
        ->     SELECT c;
        -> END
        ->
        -> //
    Query OK, 0 rows affected (0.03 sec)mysql>
    mysql> delimiter ;
    mysql> CALL sp_case(8);
    +------+
    | c    |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql>
      

  3.   

    去掉CASE后的input_number试试看