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

一个表里面有下面几个vs上限、vx下限、vd相对误差、vr绝对误差、v计算值、vb标定值、rs结果等字段,vs、vx、vd、vr四个字段均可能为空且vd、vr不同时为非空... 一个表里面有下面几个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中能用的存储过程,。。。。求大神指点
展开
 我来答
一如真a
2016-06-12 · TA获得超过369个赞
知道小有建树答主
回答量:666
采纳率:75%
帮助的人:336万
展开全部
这个存储过程还是挺简单的一个,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;
大概就是这个意思了 逻辑我没看太细 你自己填吧,写法就是这样
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式