15-10-19 23:48:04

分類:?Oracle


--創建一次執行的匿名塊任務,成功調用一次后job消失


BEGIN
? DBMS_SCHEDULER.CREATE_JOB (
? ?job_name ? ? ? ? ? ? ? ? => ?'my_new_job2',?
? ?job_type ? ? ? ? ? ? ? ? => ?'PLSQL_BLOCK',
? ?job_action ? ? ? ? ? ? ? => ?
'BEGIN
?for i in 1 .. 5 loop
? ?insert into t values (i);
?end loop;
?commit;
END;'
);
END;


--創建存儲過程代替匿名塊里面的內容,對于數據量大的代碼很方便


create or replace procedure p_insert_t
as
BEGIN
?for i in 1 .. 5 loop
? ?insert into t values (i);
?end loop;
?commit;
END;


BEGIN
? DBMS_SCHEDULER.CREATE_JOB (
? ?job_name ? ? ? ? ? ? ? ? => ?'my_new_job2',?
? ?job_type ? ? ? ? ? ? ? ? => ?'PLSQL_BLOCK',
? ?job_action ? ? ? ? ? ? ? => ?'BEGIN p_insert_t; END;'
);
END;


--查看job的狀態


SELECT job_name, owner, program_name, program_owner, state, enabled
? FROM dba_scheduler_jobs
?WHERE owner NOT IN ('SYS', 'SYSTEM');


SELECT *
? FROM dba_scheduler_jobs
?WHERE owner NOT IN ('SYS', 'SYSTEM');


--執行job, enable job和run job兩種方式都可以調用job


--enable job之后自動執行job


BEGIN
?DBMS_SCHEDULER.ENABLE ('my_new_job2');
END;


--run job


BEGIN
? DBMS_SCHEDULER.RUN_JOB(
? ? JOB_NAME ? ? ? ? ? ?=> 'my_new_job2',
? ? USE_CURRENT_SESSION => FALSE);
END;


--停止 job


BEGIN
? DBMS_SCHEDULER.STOP_JOB('MY_NEW_JOB2');
END;
/


--刪除JOB


BEGIN
? DBMS_SCHEDULER.DROP_JOB ('MY_NEW_JOB2');
END;