根据不同条件判定写成在plsql中能用的存储过程,。。。。求大神指点

一个表里面有下面几个vs上限、vx下限、vd相对误差、vr绝对误差、v计算值、vb标定值、rs结果等字段,vs、vx、vd、vr四个字段均可能为空且vd、vr不同时为非空,rs的值根据上述四个字段判定,判定逻辑为:

1、上述某个为空则不根据该字段判定,跳过;

2、先拿v与vs和vx比较,如果v>vs或者v<vx,则rs等1或者2(v>vs则1,v<vx则2,判定与结果顺序对应,后同),并结束判定;

3、否则vd非空时拿vd-abs(v-vb)判定,如果vd-abs(v-vb)<0,v-vb>0时rs=3,v-vb<0时rs=4;vr非空时拿vr-abs(v-vb)/vb判断,vr-abs(v-vb)/vb<0,v-vb>0时rs=5,v-vb<0时rs=6;

4、其他情况是rs=0。

这个过程如何写成在plsql中能用的存储过程,。。。。求大神指点

这个存储过程还是挺简单的一个,if 判断就可以了,可惜我不是用的plsql 数据库,不过我可以给你写informix的sql 要不?追问

我是这方面的小白。。方便的话帮忙就用informix的sql写下我试着改改试试也行。。。多谢了

追答

create procedure testa()
returning decimal(10);
define v_vs varchar(20);
define v_vx varchar(20);
define v_vd varchar(20);
define v_vr varchar(20);
define v_v varchar(20);
define v_vb varchar(20);
define v_rs decimal(10);
select vs ,vx ,vd ,vr ,v ,vb ,rs
into v_vs ,v_vx ,v_vd ,v_vr ,v_v ,v_vb ,v_rs
from table_name;
if v is not null and vs is not null and vx is not null then
if v>vs then
let rs = 1;
elif v<vx then
let rs = 2;
end if
elif vd is not null then
if ...
elif ...
else ...
end if;
end if;
end procedure;
大概就是这个意思了 逻辑我没看太细 你自己填吧,写法就是这样

温馨提示:答案为网友推荐,仅供参考