在PL/SQL中,可以使用DBMS_SCHEDULER來定時執(zhí)行存儲過程。以下是一個示例:
1. 創(chuàng)建一個存儲過程:
CREATE OR REPLACE PROCEDURE my_procedure ASBEGIN
-- 在這里編寫需要執(zhí)行的代碼
END;
2. 創(chuàng)建一個作業(yè):
BEGIN DBMS_SCHEDULER.CREATE_JOB (
job_name => 'my_job',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN my_procedure; END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=DAILY; BYHOUR=0; BYMINUTE=0; BYSECOND=0;',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE
);
END;
在上述示例中,`start_date`指定了作業(yè)的開始時間,`repeat_interval`指定了作業(yè)的重復(fù)執(zhí)行間隔,這里是每天的0點0分0秒執(zhí)行一次。`enabled`指定了作業(yè)是否啟用。
3. 運行作業(yè):
BEGIN DBMS_SCHEDULER.RUN_JOB('my_job');
END;
以上代碼將手動運行名為`my_job`的作業(yè)。
通過使用DBMS_SCHEDULER,可以靈活地定時執(zhí)行存儲過程,并根據(jù)自己的需求設(shè)置執(zhí)行時間和頻率。