当前位置:数据库 > Oracle >>

在oracle中使用scheduler的范例

在oracle中使用scheduler的范例
 
Sql代码  
-- 创建新表   
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;  
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,