Этот код является процедурой обновления задачи каждый раз, когда запланирована рабочая смена, и перемещения ее в другую рабочую смену, которая заканчивается только после закрытия задачи.Запланированная на рабочую смену работа следующим образом:
1º: 7:00 to 15:00
2º: 15:00 to 23:00
3º: 23:00 to 7:00
Но у меня проблема с этим кодом - это часть DBMS_SCHEDULER, я пытаюсь обновить календарь Apex, чтобы он обновлялся каждую минуту, но только обновлениякогда я запускаю в первый раз, но когда я пытаюсь запустить во второй раз, выдается следующее сообщение:
ORA-27477: "GERAL.TURNOS8" уже существует
create or replace PROCEDURE
check_task_turnos AS
CURSOR c_turnos
IS
SELECT TIPO,ID,estado,calendar_start,calendar_end
,Case
WHEN to_number(to_char(calendar_start,'HH24')) >= 7 AND to_number(to_char(calendar_end,'HH24')) < 15
THEN 'apex-cal-yellow'
when to_number(to_char(calendar_start,'HH24')) >= 15 AND to_number(to_char(calendar_end,'HH24')) < 23
THEN 'apex-cal-yellow'
when (to_number(to_char(calendar_start,'HH24')) >= 23 AND to_number(to_char(calendar_end,'HH24')) < 24
OR
to_number(to_char(calendar_start,'HH24')) >= 0 AND to_number(to_char(calendar_end,'HH24')) <= 7)
THEN 'apex-cal-yellow'
else null
end
FROM NVG_PASSAGEMTURNO
WHERE TIPO='To Do'
AND estado='Aceite';
BEGIN
FOR i IN c_turnos
LOOP
-- This table is for register reference that the task as changed the star time and end time
INSERT INTO NVG_REGISTAR_PASSAGEM(passagem_id,
start_date,
end_date
)
VALUES(i.id ,
i.calendar_start+(8/24) ,
i.calendar_end+(8/24));
-- update of start time and end time for updating the apex calendar
UPDATE NVG_PASSAGEMTURNO
SET calendar_start = i.calendar_start+(8/24)
, calendar_end = i.calendar_end+(8/24)
WHERE ID = i.ID;
END LOOP;
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'turnos8',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN
PKG_TURNOS.check_task_turnos;
END;',
number_of_arguments => 0,
start_date => TO_TIMESTAMP_TZ('2018-11-08 12:44:10.000000000 EUROPE/LONDON','YYYY-MM-DD HH24:MI:SS.FF TZR'),
repeat_interval => 'FREQ=MINUTELY; INTERVAL=1',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => '');
END;
end;