Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Ошибка в таймзоне  [new]
Алекс-Могилев
Member

Откуда:
Сообщений: 40
При выполнении цикла нужно сравнить тайм зону которая записана в столбец сейчас, с таймзоной которая должна быть у данного адреса. И если они не совпадают изменить. Использую курсор
LOOP
     
         FETCH R_VISIT_UPDATE INTO N_VISIT_ID, D_VISIT_SCHEDULED_DATE, V_TIME_ZOME_NAME;
         EXIT WHEN R_VISIT_UPDATE%NOTFOUND;
         
        LOOP
     
         FETCH R_VISIT_UPDATE INTO N_VISIT_ID, D_VISIT_SCHEDULED_DATE, V_TIME_ZOME_NAME;
         EXIT WHEN R_VISIT_UPDATE%NOTFOUND;
         
         IF (D_VISIT_SCHEDULED_DATE <> FROM_TZ(CAST(D_VISIT_SCHEDULED_DATE AS TIMESTAMP), V_TIME_ZOME_NAME))
         THEN  
         
             UPDATE R_VISIT RV
                SET RV.SCHEDULED_DATE = FROM_TZ(CAST(RV.SCHEDULED_DATE AS TIMESTAMP), V_TIME_ZOME_NAME),
                    RV.LAST_MODIFIED_BY = C$V_MODIFIED_BY,
                    RV.LAST_MODIFICATION_DATE = C$D_MODIFICATION_DATE 
              WHERE RV.VISIT_ID = N_VISIT_ID
        
                                       
              N_COUNT := N_COUNT + 1;                        
                                       
          END IF;                                                        
          
     END LOOP;


1023 Записи апдейтаются на 1024 вылетает ошибка "ERROR: ORA-01878: specified field not found in datetime or interval".
Путем перехвата записи в плоке Exception выяснил, что ошибку вызывает запись: "13-MAR-11 02.00.00.000 AM +02:00".

Погуглив я нашел инфу, что ошибка вызвана, тем что даты такой не существует, так как был перевод часов , в это время. Весь вопрос в том, как исправить данное недразумение. Прошу помощи!?
25 фев 16, 10:10    [18860718]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить