spring定时器 定时操作同一数据库数据

~~~~(>_<)~~~~ 我们做了一个宾馆项目其中有一个要求是:
创建一个存储过程,当快要到客人预订的预抵时间时(默认提前两个小时),
将房间状态设为预留,可以提醒接待人员与客人联系确认是否入住。
该存储过程的调用应该是每隔一段时间就调用一次,你会想到什么?


有定时器吗?????????
——有!
01create or replace procedure hotel_setpred
02AS
03 
04t number := 2; --默认为提前2个小时
05r_roomid number;
06begin
07  select r.roomid into r_roomid  from hotel_t_Room r,hotel_t_Predestine p
08        where  (p.arrivetime-sysdate)/24 <= t and r.roomid=p.roomid;
09  if sql%rowcount != 0 then
10     update hotel_t_Room set state=2 where roomid = r_roomid;
11     if sql%rowcount != 0 then
12       commit;
13       end if;
14  end if;
15exception
16      when no_data_found then
17        dbms_output.put_line('失败!');  
18      when others then
19        rollback;
20        dbms_output.put_line('读去失败!原因是:'||sqlerrm);
21end hotel_setpred;
22 
23--Oracle定时器
24declare
25jobno number;
26begin dbms_job.submit(
27  jobno,  --定时器ID,系统会自动获得
28  'hotel_setpred;', -- 执行的过程名
29  sysdate, --定时器开始的时间
30  'sysdate+5/1440'--设置定时器执行频率,这样是每个5分钟执行一次
31  );
32   
33  commit;
34  end;
35 interval=>trunc(sysdate,'mi')+5/(24*60);
36 dbms_job.run(84);
37--删除一个定时器
38exec dbms_job.remove(84);
39--停止一个定时器
40exec dbms_job.broken(84,sys.diutil.int_to_bool(1));
41--改变一个定时器的执行频率城每隔一小时执行一次
42exec dbms_job.interval(84,'sysdate+5/1440');
43 
44--查看调度任务
45select *from user_jobs;
46--查看正在执行的调度任务
47select *from dbms_jobs;
48--查看执行完的调度任务
49select *from dba_jobs;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值