日期:2014-05-17  浏览次数:20728 次

如何使用存储过程更新前一周库存量?
落地时间         公司     库存量     前周库存量
20121202 T 45
20121203 T 66
20121204 T 22
20121125 V 78
上面是表结构,类型:落地时间varchar2(20),公司varchar2(200),库存量number.脚本如下:
declare 
cursor get_row is select 落地时间, 公司,库存量 
from AAATEST;
v1 get_row%rowtype;
cc varchar2(200);
tt varchar2(20);
last_week number:=0;
begin
open get_row;
loop fetch get_row into v1;
exit when get_row %notfound;

begin
select 公司,落地时间, sum(库存量)/7 
into cc,tt,last_week
from AAATEST
where 公司=v1.公司 and 落地时间 between
to_char(to_date( v1.落地时间,'yyyymmdd')) and 
to_char(to_date(v1.落地时间,'yyyymmdd')-7)
group by 公司,落地时间;

update AAATEST
set 前周库存量=last_week
where 公司=v1.公司 and 落地时间=v1.落地时间;
commit;

end; 
end loop;
close get_row;

end;
但总出现ORA_01403 未找到数据的错误提示试了加异常处理,但只更新的小部分数据,或出现ORA_01422等等一系列的问题,感觉自己的逻辑出现了问题,求各位给出一个好的思路,正确的脚本,谢谢了,在线等!
------解决方案--------------------
你在处理完游标之后,在做更新,v1只会有游标中的最后一条记录
其次,我觉得对“前周”的概念还需斟酌,是单纯的7天前,还是日历上的上一周,这是有本质区别的