oracle存储过程IF判断的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle存储过程IF判断的问题相关的知识,希望对你有一定的参考价值。
你的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……这样清晰些。 参考技术A 问题1:当你传入37
时,IF
FLAG>5
已经满足条件了,直接V_VALUE
:=1;,不会继续判断了。然后就调到end
if。可以按f9调试,不信一步步看它的执行过程。
问题2:IF
V_NULL=NULL,不是这样写,是IF
V_NULL
IS
NULL
,就会输出888啦。
oracle 存储过程中 如果用if语句判断一条查询语句的结果集是不是为空
oracle 存储过程中 如果用if语句判断一条查询语句的结果集是否为空。
希望的效果是:判断If (查询结果为空),then 创建一条记录。
create table test1023(id int); --创建测试表 test1023
declare cnt int;
begin
select count(*) into cnt from test1023;
if cnt=0 then
insert into test1023 values('1');
commit;
end if;
end;本回答被提问者采纳
以上是关于oracle存储过程IF判断的问题的主要内容,如果未能解决你的问题,请参考以下文章
oracle 存储过程中 如果用if语句判断一条查询语句的结果集是不是为空