首页 新闻 会员 周边

一个关于先进先更新的sql问题

0
悬赏园豆:20 [已解决问题] 解决于 2010-12-11 13:23

表1
表1ID 单号 产品 数量 到货量
1 001 A 10
2 001 B 10
2 002 A 30



表2
表2ID 产品 到货量
1 A 30


表3
表3ID 单号 表2ID 产品
1 001 1 A
2 002 1 A
表关系就是这样的,我现在要更新表1的到货量, 产品A总共进货是30个,按照单据先进先更新的原则应该是先更新001号单A的到货数10个,再更新002号单A的到货数20个,求高手解答

jhkmnm的主页 jhkmnm | 初学一级 | 园豆:19
提问于:2010-11-09 17:04
< >
分享
最佳答案
0
create or replace procedure usp_goods_calculate
as
remainNum
number:=0;
nowproduct
varchar2(50):=' ';
needNum
number:=0;
begin
for rec in (select c.columnno,c.num xnum,b.product,b.num dnum
from table3 a
inner join table2 b
on a.product=b.product
inner join table1 c
on a.columnno=c.columnno and a.product=c.product
order by c.product,c.columnno)
loop
if nowproduct!=rec.product then
nowproduct:
=rec.product;
if rec.xnum<rec.dnum then
remainNum:
=rec.dnum -rec.xnum;
needNum:
=rec.xnum;
else
remainNum:
=0;
needNum:
=rec.dnum;
end if;
update table1
set rnum=needNum
where columnno=rec.columnno and product=rec.product;
elsif remainNum
!=0 then
if rec.xnum<remainNum then
remainNum:
=remainNum -rec.xnum;
needNum:
=rec.xnum;
else
needNum:
=remainNum;
remainNum:
=0;
end if;
update table1
set rnum=needNum
where columnno=rec.columnno and product=rec.product;
end if;
end loop;
end;

其中 单号:columnno    表1需要的数据:xnum   product:产品   dnum:到货量  rnum:获取数量

 

 

是不是这样

收获园豆:20
wgz | 小虾三级 |园豆:1254 | 2010-11-09 21:46
其他回答(1)
0

不太明白你的意思

天神一 | 园豆:845 (小虾三级) | 2010-11-09 17:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册