oracle job

create  job 语句:

declare
job number;
begin
sys.dbms_job.submit(job,'PRODUCT;', --job要执行的工作(范例为要执行的存储过程)to_date('23-02-2012', 'dd-mm-yyyy'),'TRUNC(SYSDATE+1)'); --执行job的周期(每天凌晨零点)
dbms_output.put_line(job);
end;

job时间周期:
每天运行一次 'SYSDATE + 1'
每小时运行一次 'SYSDATE + 1/24'
每10分钟运行一次 'SYSDATE + 10/(60*24)'
每30秒运行一次 'SYSDATE + 30/(60*24*60)'
每隔一星期运行一次 'SYSDATE + 7'

------------

例子:

第一步:存储过程

 1 CREATE OR REPLACE PROCEDURE PROC_QUALIFIED_STATUS
 2 AS
 3 MCOUNT INT;
 4 BEGIN
 5   FOR  REC IN (SELECT ID_NUMERIC FROM SAMPLE S WHERE  S.STATUS='C' )
 6  LOOP
 7    SELECT COUNT(0) INTO MCOUNT FROM  TEST T JOIN RESULT R ON T.TEST_NUMBER=R.TEST_NUMBER WHERE R.NAME='结论' AND R.TEXT='不符合规定' AND T.SAMPLE=REC.ID_NUMERIC;
 8      IF MCOUNT>0 THEN
 9        UPDATE SAMPLE S SET S.CT_QUALIFIED_STATUS='不符合规定',S.CT_RELEASE_STATUS='DSH' WHERE S.ID_NUMERIC=REC.ID_NUMERIC;
10        ELSE 
11            UPDATE SAMPLE S SET S.CT_QUALIFIED_STATUS='符合规定',S.CT_RELEASE_STATUS='DSH' WHERE S.ID_NUMERIC=REC.ID_NUMERIC;
12            END IF;
13    END LOOP;
14    COMMIT;
15    EXCEPTION
16   WHEN OTHERS THEN
17     ROLLBACK;
18   END;

第二步:job创建

1 declare 
2 job number;
3 begin
4   sys.dbms_job.submit(job,'PROC_QUALIFIED_STATUS;',to_Date('2013-12-31','yyyy-MM-dd'),'sysdate+30/(60*24*60)');
5   dbms_output.put_line(job);
6   end;
View Code
原文地址:https://www.cnblogs.com/hfliyi/p/3628121.html