oracle存储过程中写IF ELES

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle存储过程中写IF ELES相关的知识,希望对你有一定的参考价值。

我想在if中写判断查询语句是否成立,还有if中能不能写 || 。
条件多了怎么办。。。

参考技术A if 条件 then
语句
elsif 条件 then
语句
else
语句
end if;
参考技术B if a is not null or b != '01' then
......
elsif (b =1 or b=2) and a is null then
......
end if;追问

if 或者是 elsif 中再写个if 要结束的话,还用不用在if下写个end if?

追答

用,这些都是成对出现的,例如:
if a is not null or b != '01' then
......
elsif (b =1 or b=2) and a is null then
if b=1 then
......
end if;
......

end if;

参考技术C if 1=1 then
--
eles
--
end if ;追问

能写个存储过程带IF的例子么

追答

create or replace procedure update_ply_base_status is
vOrderId TB_TSWWW_PLY.C_ORDERID_RELATE%TYPE;
vProdNo TB_TSWWW_PLY.c_Prod_No%TYPE;
vFinS TB_TSWWW_PLY.c_Fin_Stat%TYPE;
vState TB_TSWWW_PLY.c_Stat%TYPE;

CURSOR CUR_EDR IS
select t.c_orderid_relate,
t.c_prod_no,
t.c_fin_stat,
t.c_stat
from TB_TSWWW_PLY t where t.t_crt_date>=sysdate-1/24 or t.t_upd_date>=sysdate-1/24;

BEGIN

BEGIN
OPEN CUR_EDR;
LOOP
FETCH CUR_EDR
INTO vOrderId, vProdNo, vFinS, vState;
EXIT WHEN CUR_EDR%NOTFOUND;

IF vFinS='0' and vState='1' THEN
BEGIN
IF substr(vOrderId,0,2)='00' THEN

update t_ply_base a set a.c_order_status='005' where a.c_orderid_relate=vOrderId;

ELSE

update t_ply_base a set a.c_order_status='005' where a.c_orderid_relate=vOrderId and a.c_prod_no=vProdNo;

END IF;
END;

END IF;

IF vFinS='1' and vState='1' THEN
BEGIN
IF substr(vOrderId,0,2)='00' THEN

update t_ply_base a set a.c_order_status='008',a.c_payment_status='1' where a.c_orderid_relate=vOrderId;

ELSE

update t_ply_base a set a.c_order_status='008',a.c_payment_status='1' where a.c_orderid_relate=vOrderId and a.c_prod_no=vProdNo;

END IF;
END;

END IF;

END LOOP;
CLOSE CUR_EDR;
COMMIT;
END;

end update_ply_base_status;

本回答被提问者采纳
参考技术D 恩 然后呢!

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

oracle 存储过程中 如果用if语句判断一条查询语句的结果集是否为空。
希望的效果是:判断If (查询结果为空),then 创建一条记录。

参考技术A 已经经过测试,可以。

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 ELES的主要内容,如果未能解决你的问题,请参考以下文章

用存储过程好,还是在代码中写SQL语句好

oracle 存储过程 if语句

请教关于oracle中写存储过程时 select into 语句报错的问题

oracle 存储过程里的if else

oracle存储过程IF判断的问题

oracle存储过程技术怎么就那么不规范?if else if 再多个else if就不能用了?