1、基本概念
Oracle支持设置一个定时任务,来达到在某个固定时间点进行数据库的操作的目的,这个叫做job
2、脚本设置定时任务
2、1脚本创建存储过程
脚本的使用基于存储过程,所以我们在设置定时任务之前,先要创建一个供定时任务使用的存储过程
create or replace procedure 存储过程名 is
begin
我们的sql语句;
end;
tips:这个存储过程比较简单,具体的存储过程可以查看一下其他帖子,下面是一个简单示例
create or replace procedure reportJob is
begin
INSERT INTO TB_TRANSPORT_COST_REPORT
(
CONTRACT_NUMBER,
TRANSPORT_CODE,
PLATE_NUMBER,
CUSTOM_NAME,
PRINT_DATE,
RECEIVE_DATE,
P_NUMBER,
L_NUMBER,
T_NUMBER,
P_WEIGHT,
R_WEIGHT,
PRICE,
R_MILEAGE,
R_TRANSPORT_STOP_COST,
R_TRANSPORT_COST)
(select
CONTRACT_NUMBER,
TRANSPORT_CODE,
PLATE_NUMBER,
CUSTOM_NAME,
PRINT_DATE,
RECEIVE_DATE,
P_NUMBER,
L_NUMBER,
T_NUMBER,
P_WEIGHT,
R_WEIGHT,
PRICE,
R_MILEAGE,
R_TRANSPORT_STOP_COST,
R_TRANSPORT_COST
from VIEW_TRANSPORT_COST_REPROT1);
end;
2.2、脚本创建定时任务
创建完了存储过程,我们来创建定时任务
declare job number;
BEGIN
DBMS_JOB.SUBMIT(JOB => job, WHAT => 'reportJob;', NEXT_DATE => sysdate, INTERVAL => 'trunc(Sysdate+1)+(1*60)/(24*60)'); commit;
end;
- WHAT ,该位置填写存储过程名;
- NEXT_DATE ,该位置填写下次执行时间(填写sysdate会立马执行一次)
- INTERVAL ,该位置填写时间间隔,trunc(Sysdate+1)+(160)/(2460)就代表第二天凌晨一点执行,具体可以搜索trunc用法
里面有个commit是因为我存储过程做了添加,需要提交
4.select * from user_jobs
该语句可以拿来查询定时任务,返回的结果会有上次执行时间以及下次执行时间
3、PL/SQL设置定时任务
右击图片上的DBMS_Jobs
点击新建
填入what值以及间隔即可