- 论坛徽章:
- 0
|
原帖由 snowbaby 于 2006-12-27 15:59 发表
CREATE OR REPLACE PROCEDURE "HOURLYCOUNTJOB"
is
vnowhour date;
vdohour date;
begin
select thehour into vnowhour from (
select * from hourlycount
where cid = -2 and pvs > 0 and dip > 0
and thehour < trunc(sysdate,'hh24')
order by thehour desc ) where rownum < 2;
select thehour into vdohour from nowdo;
-- while ((vdohour+1/24) <= (vnowhour-1/24))
while ((vdohour+1/24) <= (vnowhour))
loop
vdohour := vdohour+1/24;
proc_hourlycount(vdohour);
update nowdo set thehour = trunc(vdohour,'hh24');
commit;
end loop;
end;
select thehour into vnowhour from (
select * from hourlycount
where cid = -2 and pvs > 0 and dip > 0
and thehour < trunc(sysdate,'hh24')
order by thehour desc ) where rownum < 2;
从hourlycount table中根据条件选出一条记录,并将thehour字段值赋给vnowhour变量
select thehour into vdohour from nowdo;
将nowdo表thehour字段值赋给vdohour变量 (??难道这张表只有一条记录?)
while ((vdohour+1/24) <= (vnowhour))
loop
vdohour := vdohour+1/24;
proc_hourlycount(vdohour);
update nowdo set thehour = trunc(vdohour,'hh24');
commit;
end loop;
变量vnowhour,vdohour应该是1-24之间的整数代表一天的24小时。
这个循环主要就是根据vnowhour变量的值来更新nowdo table的thehour值,以一个小时的增量来判断,同时执行proc_hourlycount procedure。
具体为什么这样设计要根据具体的需求来分析的。从表面看大概是这个意义。 |
|