范例源码:
-- 创建新表 create table T_TEST_JOB ( ID LONG, TEST_DATE TIMESTAMP(6) ) tablespace GBIAPS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64 minextents 1 maxextents unlimited ); -- 创建序列 create sequence SEQ_TEST_JOB minvalue 1 maxvalue 9999999999999999999999999999 start with 1 increment by 1 cache 10; -- 创建存储过程 create or replace procedure P_TEST_JOB as begin insert into t_test_job(id,test_date) values (SEQ_TEST_JOB.NEXTVAL,sysdate); end; / /* 在使用create_job或者create_schedule前,请先检查 NLS_DATE_LANGUAGE, NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT, NLS_TIMESTAMP_TZ_FORMAT 等参数的值, 通过alter session 命令来修改 alter session set NLS_DATE_FORMAT='yyyy-MM-dd'; alter session set NLS_TIMESTAMP_FORMAT='yyyy-MM-dd hh24:mi:ss'; alter session set NLS_TIMESTAMP_TZ_FORMAT='yyyy-MM-dd HH:MI:SS.FF AM TZR'; */ select * from nls_session_parameters where parameter like '%_DATE_%' or parameter like '%_TIMESTAMP_%'; -- 创建job -- FREQ 用来指定间隔的时间周期,可选参数有: YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY -- INTERVAL 用来指定间隔的频繁,可指定的值的范围从1-999 -- 附加的参数有: BYMONTH,BYWEEKNO,BYYEARDAY,BYMONTHDAY,BYDAY,BYHOUR,BYMINUTE,BYSECOND /* 每周的1,3,5运行job FREQ=WEEKLY; BYDAY=MON,WED,FRI 每年的3,6,9,12月的30号运行job FREQ=YEARLY; BYMONTH=MAR,JUN,SEP,DEC; BYMONTHDAY=30 每月1号凌晨1点执行一次 Freq=Monthly;BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0;Interval=1 */ begin sys.dbms_scheduler.create_job(job_name => 'JOB_TESTJOB', job_type => 'STORED_PROCEDURE', job_action => 'P_TEST_JOB', start_date => sysdate, repeat_interval => 'Freq=MINUTELY;BYSECOND=0;Interval=1', end_date => to_date(null), job_class => 'DEFAULT_JOB_CLASS', enabled => true, auto_drop => false, comments => 'Baiyun Airport Web Site'); end; / -- 启动job begin dbms_scheduler.enable('JOB_TESTJOB'); end; / -- 运行job begin dbms_scheduler.run_job('JOB_TESTJOB',TRUE); -- true代表同步执行 end; / -- 停止job begin dbms_scheduler.stop_job(job_name => 'JOB_TESTJOB',force => TRUE); end; / -- 删除job begin dbms_scheduler.drop_job(job_name => 'JOB_TESTJOB',force => TRUE); end; / -- 查询job select * from user_scheduler_jobs; select * from dba_scheduler_jobs; -- 查看数据 select * from t_test_job; -- 删除数据 delete from t_test_job;
?