CftClub.ru
Клуб специалистов ЦФТ-Банк

Почему не меняет дату в поле?

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
arkazar
Участник со стажем


Вступление в Клуб: 27.09.2010
СообщениеВт Апр 03, 2012 13:23   Почему не меняет дату в поле? Ответить с цитатой
Полезность: Нет оценки
Добрый день!

Не могу разобраться. Дело практически полтергейст.
У меня есть операция расширение другой операции. В частности откат пролонгации в сейфовых ячейках.
Так вот в конце операции я присваиваю договору сейфовых ячеек дату окончания. Но она не меняется всё равно.
Если выводить через stdio.put_line_buf то перед концом операции выводит правильное значение ячейки. Но в самой ячейке значение не меняется. Как такое может быть? Я не запускаю основную операцию избегая её exception.

Код:
   x:='aaa';
   to_number(x);

   &BASE$SETVARS;
   &BASE$VALIDATE;
   &BASE$GETVARS;

   exception when others then
      null;
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеВт Апр 03, 2012 13:26   Re: Почему не меняет дату в поле? Ответить с цитатой
Полезность: Нет оценки
arkazar пишет:
Добрый день!

Не могу разобраться. Дело практически полтергейст.
У меня есть операция расширение другой операции. В частности откат пролонгации в сейфовых ячейках.
Так вот в конце операции я присваиваю договору сейфовых ячеек дату окончания. Но она не меняется всё равно.
Если выводить через stdio.put_line_buf то перед концом операции выводит правильное значение ячейки. Но в самой ячейке значение не меняется. Как такое может быть? Я не запускаю основную операцию избегая её exception.

Код:
   x:='aaa';
   to_number(x);

   &BASE$SETVARS;
   &BASE$VALIDATE;
   &BASE$GETVARS;

   exception when others then
      null;


возможно возникает исключение.
А у вас ниже описан перехват всех исключений и при этом, судя по коду, система ни каких действий не предпринимает.

уберите перехват экпшена и увидите где именно проблема.

и кстати, каким образом 'aaa' будет преобразовано в число?
вот Вм ваш эксепшен.. в результате макрос не работает
_________________
всегда есть как минимум 2 выхода
arkazar
Участник со стажем


Вступление в Клуб: 27.09.2010
СообщениеВт Апр 03, 2012 13:38    Ответить с цитатой
Полезность: Нет оценки
Да, оно и должно возникать. Выше написан код который должен быть вместо основной операции. А exception позволяет не выполнять основную операцию.
Вот...
Код:
   stdio.put_line_buf('Устанавливаем дату окончания действия договора: '||to_char(new_end_date, 'DD/MM/YY'));
   [DATE_ENDING]:= new_end_date;
   stdio.put_line_buf('Удаляем пролонгацию.');
   prol.[DELETE#AUTO];


   x:='aaa';
   to_number(x);

   &BASE$SETVARS;
   &BASE$EXECUTE;

   exception when no_data_found then
      stdio.put_line_buf('не нашёл');
   when others then
      null;
end;
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеВт Апр 03, 2012 13:48    Ответить с цитатой
Полезность: Нет оценки
arkazar пишет:
Да, оно и должно возникать. Выше написан код который должен быть вместо основной операции. А exception позволяет не выполнять основную операцию.
Вот...
Код:
   stdio.put_line_buf('Устанавливаем дату окончания действия договора: '||to_char(new_end_date, 'DD/MM/YY'));
   [DATE_ENDING]:= new_end_date;
   stdio.put_line_buf('Удаляем пролонгацию.');
   prol.[DELETE#AUTO];


   x:='aaa';
   to_number(x);

   &BASE$SETVARS;
   &BASE$EXECUTE;

   exception when no_data_found then
      stdio.put_line_buf('не нашёл');
   when others then
      null;
end;


странно.. в вопросе был код из секции проверки.. счас приводите текст из секции тело)) ну да ладно.

В пакете что написано? операция простая или групповая?
_________________
всегда есть как минимум 2 выхода
arkazar
Участник со стажем


Вступление в Клуб: 27.09.2010
СообщениеВт Апр 03, 2012 13:50    Ответить с цитатой
Полезность: Нет оценки
Операция простая.
arkazar
Участник со стажем


Вступление в Клуб: 27.09.2010
СообщениеВт Апр 03, 2012 14:02    Ответить с цитатой
Полезность: Нет оценки
Выход нашёлся.

Код:
   stdio.put_line_buf('Устанавливаем дату окончания действия договора: '||to_char(new_end_date, 'DD/MM/YY'));
   [DATE_ENDING]:= new_end_date;
   stdio.put_line_buf('Удаляем пролонгацию.');
   prol.[DELETE#AUTO];


   x:='aaa';
   to_number(x);

   &BASE$SETVARS;
   &BASE$EXECUTE;
   this.[DATE_ENDING]:= new_end_date;
   exception when no_data_found then
      stdio.put_line_buf('не нашёл');
   when others then
      null;
end;
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru