oracle存储过程IF判断的问题
发布网友
发布时间:2022-04-19 23:59
我来回答
共2个回答
热心网友
时间:2022-04-09 06:23
你的if
逻辑有问题:当输入37的时候
flag>5
肯定结果是1,不会进入else了。
你可以再第一行加上flag<=10
然后试试。
当然你下面的逻辑还有问题,你自己去琢磨琢磨,根据你的需求慢慢改吧!
if
flag>5
and
flag<=10
then
v_value
:=1;
elsif
flag>10
then
v_value
:=2;
elsif
flag<20
then
v_value
:=3;
elsif
flag<39
then
v_value
:=4;
else
v_value
:=5;
end
if;
实在搞不懂逻辑,可以用switch……case……这样清晰些。
热心网友
时间:2022-04-09 07:41
问题1:当你传入37
时,IF
FLAG>5
已经满足条件了,直接V_VALUE
:=1;,不会继续判断了。然后就调到end
if。可以按f9调试,不信一步步看它的执行过程。
问题2:IF
V_NULL=NULL,不是这样写,是IF
V_NULL
IS
NULL
,就会输出888啦。