表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个,求高手解答
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:获取数量
是不是这样
不太明白你的意思