oracle 存储过程中 如果用if语句判断一条查询语句的结果集是否为空

已经经过测试,可以。

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判断问题

你的IF 逻辑有问题:当输入37的时候 flag>5 肯定结果是1,不会进入else了。

你可以再第一行加上FLAG当然你下面的逻辑还有问题,你自己去琢磨琢磨,根据你的需求慢慢改吧!

IF FLAG>5 and FLAGV_VALUE :=1;

ELSIF FLAG>10 THEN

V_VALUE :=2;

ELSIF FLAGV_VALUE :=3;

ELSIF FLAGV_VALUE :=4;

ELSE V_VALUE :=5;

END IF;

实在搞不懂逻辑,可以用switch……case……这样清晰些。

oracle怎么写IF语句

如果是 SQL 语句里面使用。

使用 DECODE 或者 CASE WHEN

DECODE 的用法就是

DECODE(abc, 50, 'A', 'B')

CASE WHEN 的用法就是

CASE WHEN abc=50 THEN 'A' ELSE 'B' END

如果是在存储过程里面的话,就是简单的 IF/ELSE 了

SQL 语句的话,就是

SELECT

abc, DECODE(abc, 50, 'A', 'B')

FROM

oracle 存储过程里的if else

create or replace procedure p_run_temp as

S_DATE:=to_number(to_char(sysdate,'d'),'9');--查询下to_char这个函数是否有问题

begin

if S_date=4 then

p_temp();

else

p_temp2();

end if ;

end p_run_temp;

存储过程一般用AS。而且题中的存储过程语法也有问题。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐