背景:定时器调用一个存储过程,存过功能为每月或者每周(有个维度变量控制)根据模板表创建一次表,我可以通过手动drop,create定时器切换建表是按周还是按月创建。(数据量大的情况切换为按周创建)
问题:在存储过程内如何判断这个定时器是第一次执行,还是之后的执行?
declare
job number;
-- Local variables here
v_month number:=0;
v_week number:=1;
begin
dbms_scheduler.create_job(
job_name => 'test_create_table_by_month',
job_type => 'STORED_PROCEDURE',
job_action => 'create_monthly_table',
number_of_arguments => 1,
REPEAT_INTERVAL => 'FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=19; BYHOUR=8; BYMINUTE=00',
enabled => FALSE
);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => 'test_create_table_by_month',
argument_position => 1,
argument_value => v_month
);
DBMS_SCHEDULER.enable('test_create_table_by_month');
DBMS_SCHEDULER.run_job('test_create_table_by_month');
end;
最简单的方式就是用一个表记录执行次数