Oracle中使用定时任务调用存储过程

本文介绍如何在Oracle数据库中设置定时任务来定期执行存储过程。通过具体示例展示了创建存储过程的方法,并利用DBMS_JOB包来设定定时任务,实现每隔特定时间自动执行指定任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle中使用定时任务调用存储过程[原创]
2006-11-16 08:51 A.M.

现在需要每晚12点向表app_carstatus插入数据。

//下面是一个简单事例:
declare  
jobno   number;  
begin  
dbms_job.submit(jobno,'P_SBZS_GENZNJQC;',sysdate,'trunc(sysdate)+1');--每天零晨  
commit;
end;  
/

DBMS_JOB.SUBMIT(:jobno,//job号  
                                  'your_procedure;',//要执行的过程  
                                  trunc(sysdate)+1/24,//下次执行时间  
                                  'trunc(sysdate)+1/24+1'//每次间隔时间  
                                );  
  删除job:dbms_job.remove(jobno);  
  修改要执行的操作:job:dbms_job.what(jobno,what);  
  修改下次执行时间:dbms_job.next_date(job,next_date);  
  修改间隔时间:dbms_job.interval(job,interval);  
  停止job:dbms.broken(job,broken,nextdate);  
  启动job:dbms_job.run(jobno);  
  例子:  
  VARIABLE jobno number;  
  begin  
      DBMS_JOB.SUBMIT(:jobno,    
                      'Procdemo;',   --存储过程名  
                        SYSDATE,   'SYSDATE + 1/720');---每2分钟执行一次  
      commit;  
  end;  
  /  

 

真正要实现最初的功能,需要如下操作:
//创建存储过程,通过定时任务调用存储过程:
1)创建一个自定义过程  
create or replace procedure p_carstatus as  
begin  
 INSERT INTO app_carstatus
 SELECT a.infoid,a.infolicense,c.modelname,e.atticode,d.deptname,b.statusid,sysdate FROM app_carinfo a,app_infodynamic b,app_infomodel c,app_cardept d,app_caratti e
 WHERE a.infoid=b.infoid(+) and a.modelid=c.modelid(+) and a.deptid=d.deptid(+) and a.attiunitid=e.attiid(+);
 COMMIT;
end;
/

过程已创建。

2)创建JOB  
variable   job1   number;

begin  
dbms_job.submit(:job1,'p_carstatus;',trunc(sysdate)-1/1440,'trunc(sysdate)-1/1440+1');
end;  
/

PL/SQL   过程已成功完成。  
 
3)运行JOB  
begin  
dbms_job.run(:job1);  
end;  
/

PL/SQL   过程已成功完成。  


4)删除JOB  
begin  
dbms_job.remove(:job1);  
end;
/

PL/SQL   过程已成功完成。  

                                               

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值