关于oracle计划任务设置的实例

承接上文,本片具体讨论一下plan_jobs,在数据库中常常需要用到很多的计划任务,
主要是实现数据的定时处理。比如在本次开发中,我们有一个酒店取消预订的计划任务需要实施,存储过程如下
[code]
----取消房间预订
PROCEDURE CANCELPREBOOK
AS
cursor cur_prebook is
select t.prebookid,t.roomid
from prebook t
where t.valid=0
and t.roomid =-1
and t.scheduledate<sysdate;
CURSOR CUR_HASPREBOOK IS
select t.prebookid,t.roomid
from prebook t
where t.valid=0
AND T.ROOMID<>-1
and t.scheduledate<sysdate;
v_id number;
v_roomid number;
V_STATUS NUMBER;
BEGIN
open cur_prebook;
loop
fetch cur_prebook into v_id,v_roomid;
exit when cur_prebook%notfound;
----取消预订表
update prebook t
set t.valid=1
where t.valid=0
and t.prebookid=v_id;
----取消预订房间
update rooms rm
set rm.status=1
where rm.roomid=v_roomid;
end loop;
close cur_prebook;
----CANCEL HASN'T IN
OPEN CUR_HASPREBOOK;
loop
fetch CUR_HASPREBOOK into v_id,v_roomid;
exit when CUR_HASPREBOOK%notfound;
SELECT T.STATUS INTO V_STATUS
FROM ROOMS T WHERE T.ROOMID=V_ROOMID;
IF V_STATUS=2 THEN
----CANCEL ROOM
UPDATE ROOMS RS SET RS.STATUS=1
WHERE RS.ROOMID=v_roomid;
---CANCEL PREBOOK RECORD
UPDATE PREBOOK BK SET BK.VALID=1
WHERE BK.PREBOOKID= v_id;
END IF;
END LOOP;
CLOSE CUR_HASPREBOOK;
END CANCELPREBOOK;
[/code]
具体的方法是:
1,打开pl/sql的command window。
2,定义一个number变量叫jobno。
sql>variable jobno number;
3,提交任务。

SQL> begin
2 dbms_job.submit(--pro C的语法
:jobno,----任务计划系统编号
'ems_planjob_pkg.CANCELPREBOOK;',----调用计划包中的目标过程
sysdate+(45/1440),----首次执行时间
'sysdate+1'-----间隔执行时间
);
3 end;
4 /-----激活
成功后提示如下
PL/SQL procedure successfully completed
用户可以查询出当前的任务计划,确认是否正确,语句如下
select * from user_jobs;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值