Создание процедуры для задачи, чтобы она работала рабочими сменами - PullRequest
0 голосов
/ 14 ноября 2018

Я создаю процедуру для задачи для рабочей смены, и я сталкиваюсь с некоторыми ошибками

CREATE OR REPLACE PROCEDURE check_task_turnos
AS
BEGIN
   FOR i
      IN (SELECT calendar_start,
                 calendar_end,
                 estado,
                 CASE
                    WHEN     TO_NUMBER (TO_CHAR (calendar_start, 'HH24')) >=
                                7
                         AND TO_NUMBER (TO_CHAR (calendar_start, 'HH24')) <
                                15
                         AND estado = 'Aceite'
                    THEN
                       'apex-cal-yellow'
                    ELSE
                       NULL
                 END
            FROM PASSAGEM)
   LOOP
      -- registo no LOG , aqui nao registas na PASSAGEM, registas numa tabela ao lado de LOG para teres referencia de quando foi alterada a data da tarefa
      INSERT INTO PASSAGEM_LOG (passagem_id, start_date, end_date)
              VALUES (
                        i.id,
                        i.calendar_start + (SYSDATE - 8 / 24),
                        i.calendar_end + (SYSDATE - 8 / 24));

      -- update das horas de inico e fim para posicionamento no calendario
      UPDATE PASSAGEM
         SET calendar_start = i.calendar_start + (SYSDATE - 8 / 24) --incrementamos 8horas (periodod e um turno
                                                                   ,
             calendar_end = i.calendar_end + (SYSDATE - 8 / 24) --incrementamos 8horas (periodod e um turno
       WHERE ID = i.ID;
   END LOOP;

   COMMIT;
END;

Ошибка:

Error(11,17): PL/SQL: SQL Statement ignored    
Error(15,42): PL/SQL: ORA-00984: column not allowed here    
Error(15,42): PLS-00302: component 'ID' must be declared    
Error(19,17): PL/SQL: SQL Statement ignored    
Error(22,28): PL/SQL: ORA-00904: "I"."ID": invalid identifier    
Error(22,30): PLS-00302: component 'ID' must be declared

1 Ответ

0 голосов
/ 14 ноября 2018

Вам не хватает идентификатора для i, добавьте его в select:

 FOR i IN (SELECT ID, calendar_start, calendar_end, estado 
...