Предположим, что вы находитесь в день с декабря 2018 года, и ваша цель - заполнить таблицу MyTable2
данными из таблицы MyTable
.
Во-первых, давайте создадим MyTable2
без данных:
create table MyTable2 as
select myColumn1, myColumn2
from MyTable
where 1 = 9;
, а затем создайте процедуру, с помощью которой заполняйте MyTable2 в последний день каждого месяца
create or replace procedure pr_populate_Mytable2 is
begin
insert into MyTable2
select myColumn1, myColumn2
from MyTable
where to_char(myColumn_DATE, 'YYYY/MM') = to_char(sysdate,'YYYY/MM');
commit;
end;
путем вызова процедуры из dbms_scheduler
как
declare
v_job_name varchar2(32) := 'jb_populate_Mytable2';
begin
dbms_scheduler.create_job(
job_name => v_job_name,
job_type => 'STORED_PROCEDURE',
job_action => 'pr_populate_Mytable2',
start_date => to_date('31-12-2018 20:00:00', 'dd-mm-yyyy hh24:mi:ss'),
repeat_interval => 'FREQ=MONTHLY; BYMONTHDAY=-1; BYHOUR=21;',
auto_drop => false,
comments => 'Populates our table on the last day of every month at 21 o''clock ');
dbms_scheduler.enable(v_job_name);
end;
начинается в 8 вечера в последний день декабря и повторяется в последующие дни месяца в 9 вечера в будущем.