您的位置:首页 > 编程语言 > Java开发

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

2015-08-25 10:59 363 查看
~~~~(>_<)~~~~ 我们做了一个宾馆项目其中有一个要求是:

创建一个存储过程,当快要到客人预订的预抵时间时(默认提前两个小时),

将房间状态设为预留,可以提醒接待人员与客人联系确认是否入住。

该存储过程的调用应该是每隔一段时间就调用一次,你会想到什么?

有定时器吗?????????

——有!


01
create
or

replace
procedure
hotel_setpred
02
AS
03
 
04
t number := 2;
--默认为提前2个小时
05
r_roomid number;
06
begin
07
  
select

r.roomid
into
r_roomid  
from
hotel_t_Roomr,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;
15
exception
16
      
when

no_data_found
then
17
        
dbms_output.put_line(
'失败!'
);  
18
      
when

others
then
19
        
rollback
;
20
        
dbms_output.put_line(
'读去失败!原因是:'
||sqlerrm);
21
end
hotel_setpred;
22
 
23
--Oracle定时器
24
declare
25
jobno number;
26
begin
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
--删除一个定时器
38
exec
dbms_job.remove(84);
39
--停止一个定时器
40
exec
dbms_job.broken(84,sys.diutil.int_to_bool(1));
41
--改变一个定时器的执行频率城每隔一小时执行一次
42
exec
dbms_job.interval(84,
'sysdate+5/1440'
);
43
 
44
--查看调度任务
45
select
*
from

user_jobs;
46
--查看正在执行的调度任务
47
select
*
from

dbms_jobs;
48
--查看执行完的调度任务
49
select
*
from

dba_jobs;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: