下面我设置了一个使用参数循环的过程。但是,我正在测试它的一部分,但却得到了不必要的输出。
当我选择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;
答案 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;