MySQL null变量没有返回正确的大小写

时间:2012-09-27 02:10:50

标签: mysql null scope case

下面我设置了一个使用参数循环的过程。但是,我正在测试它的一部分,但却得到了不必要的输出。

当我选择p_start为null时,select v_start输出将声明v_start为NULL。但我认为有一个案例陈述会将v_start重新定义为1而不是......

有什么建议吗?感谢。

Create procedure counter_loop( p_start int, 
                               p_end int,
                               p_step int, 
                               p_delim varchar(5))
begin
declare v_start int ;
declare v_end int ;
declare v_step int ;
declare v_sign int;


-- check p_start
case p_start
when null then
    set v_start := 1;
else
    set v_start := p_start;
end case;

 select v_start;

2 个答案:

答案 0 :(得分:0)

当您调用存储过程时,您是说将p_start参数声明为null吗?或传递一个空字符串?

exec counter_loop(null,10,2,'abc')然后我认为你的null case会捕获它。

我建议你在p_start上使用整数检查而不是null。

有些事情:

CASE p_start when (len(p_start) > 0 and p_start > 0)  then ...

答案 1 :(得分:0)

语法错误...当检查p_start是否为空时...用IS NULL检查。

 case 
 when **p_start is** null then
    set v_start := 1;
 else
    set v_start := p_start;
 end case;