现在需要每晚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   过程已成功完成。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐