oracle数据库做定时任务(插入) 笔记

--创建测试表

create table test_user(name varchar2(20),age int,addr varchar2(50));

--创建一个自定义过程

create or replace procedure test_procedureas  is
begin
 insert into test_user values('张三',23,'北京');
 insert into test_user values('张四',33,'上海');
 insert into test_user values('张五',53,'北京');
end;

 

--注意创建一个job用到的函数是sys.dbms_job.submit()函数

--该函数里面的第一个参数是job用来唯一表示job的 ,是out型的,就像procedure中的int相对应的out一样

--该参数是函数方法返回的参数

declare  
test_job number;     
begin
  sys.dbms_job.submit(test_job,'test_procedureas;',sysdate,'sysdate+10/1440');
end;

 

--注意创建完毕后要提交事物

commit;

 

--从user_jobs表里面查询job;如果有则说明job创建成功了

select * from user_jobs


--**********************运行job    ,25是创建的那个job(user_jobs表中的job字段)

begin

 dbms_job.run(25);

end;

 

--*********************修改job的间隔时间

begin

 dbms_job.interval(25,'sysdate+1');

end;

 

--*********************删除job

begin

 dbms_job.remove(25);

end;

/*

    相关的几个JOB操作

 

8 25 11:30

selectto_char(add_months(sysdate,2),'yyyy-mm-dd') from dual


 

删除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);

*/

 

每天午夜12点 'TRUNC(SYSDATE + 1)'

每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'

每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ),''TUESDAY'' ) + 12/24'

每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'

每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24,3 ), 'Q' ) -1/24'

每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE,"SUNDAY"))) + (6×60+10)/(24×60)'

 

注意建立job后需要提交事物

你可能感兴趣的:(数据库基础知识)