CREATE TABLE test_job (para_date DATE);
INSERT INTO test_job VALUES (SYSDATE);
COMMIT;
CREATE OR REPLACE PROCEDURE test_jobproce AS
BEGIN
INSERT INTO test_job VALUES (SYSDATE);
END test_jobproce;
/
COMMIT;
DECLARE
v_jobno NUMBER;
BEGIN
DBMS_JOB.SUBMIT(v_jobno, 'test_jobproce;', SYSDATE, 'SYSDATE + 1/1440');
COMMIT;
END;
/
-- 假設回傳 Job 編號 25
-- 停用 BEGIN DBMS_JOB.BROKEN(25, TRUE); COMMIT; END; / -- 啟用 (立即執行一次) BEGIN DBMS_JOB.RUN(25); COMMIT; END; / -- 移除 BEGIN DBMS_JOB.REMOVE(25); COMMIT; END; / -- 查詢執行記錄 SELECT * FROM test_job ORDER BY para_date DESC; -- 查詢 Job 狀態 SELECT * FROM USER_JOBS; SELECT * FROM DBA_JOBS_RUNNING; -- 正在跑的 SELECT * FROM DBA_JOBS; -- 歷史完成
| 功能 | 語法 |
|---|---|
| 修改執行內容 | DBMS_JOB.WHAT(job, 'new_proc;'); |
| 修改下次執行時間 | DBMS_JOB.NEXT_DATE(job, SYSDATE); |
| 指定時間停用 | DBMS_JOB.BROKEN(job, TRUE, next_date); |
查詢 test_job 表,每分鐘應新增一筆 SYSDATE 記錄,證實 Job 正常運作。