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

Локальные переменные

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


Вступление в Клуб: 28.12.2008
СообщениеСр Ноя 12, 2014 07:18   Локальные переменные Ответить с цитатой
Полезность: Нет оценки
Вопрос следующий, как можно быстро (без перечисления переменных с присвоением null) очистить переменные описанные в локальном описании операции (может быть > 100) , ибо при последующем вызове полученные раннее значения этих параметров не затираются.

Как правило это операция печати, переменные из локального описания вычисляются или переопределяются в проверке по умолчанию один раз и подставляются в разные отчеты. При повторном вызове операции печати в той же сессии переменные все еще хранят данные с предыдущего вызова и как раз необходимо переинициализировать их.
devor
Профи
Неподтвержденный


Вступление в Клуб: 13.02.2012
СообщениеСр Ноя 12, 2014 07:46   Re: Локальные переменные Ответить с цитатой
Полезность: Нет оценки
Every пишет:
Вопрос следующий, как можно быстро (без перечисления переменных с присвоением null) очистить переменные описанные в локальном описании операции (может быть > 100) , ибо при последующем вызове полученные раннее значения этих параметров не затираются.

Как правило это операция печати, переменные из локального описания вычисляются или переопределяются в проверке по умолчанию один раз и подставляются в разные отчеты. При повторном вызове операции печати в той же сессии переменные все еще хранят данные с предыдущего вызова и как раз необходимо переинициализировать их.


pragma SERIALLY_REUSABLE;
Every
Участник со стажем
Неподтвержденный


Вступление в Клуб: 28.12.2008
СообщениеСр Ноя 12, 2014 09:56   Re: Локальные переменные Ответить с цитатой
Полезность: Нет оценки
devor пишет:

pragma SERIALLY_REUSABLE;


Попробовал, не подходит, переменные теряют значения в (P_MESSAGE = 'VALIDATE'), полученные ранее в (P_MESSAGE = 'DEFAULT') . Для библиотеки випа кэш.библиотека работает нормально, но в простых операциях оно не особо применимо
Random
Эксперт
Резидент CftClub


Вступление в Клуб: 27.06.2011
СообщениеСр Ноя 12, 2014 12:17   Re: Локальные переменные Ответить с цитатой
Полезность: Нет оценки
Every пишет:
devor пишет:

pragma SERIALLY_REUSABLE;


Попробовал, не подходит, переменные теряют значения в (P_MESSAGE = 'VALIDATE'), полученные ранее в (P_MESSAGE = 'DEFAULT') . Для библиотеки випа кэш.библиотека работает нормально, но в простых операциях оно не особо применимо


Логично.
pragma SERIALLY_REUSABLE командует очищать переменные сразу, как только сессия переходит от состояния ACTIVE в любое другое.
Попробуйте dbms_session.reset_package.
Every
Участник со стажем
Неподтвержденный


Вступление в Клуб: 28.12.2008
СообщениеСр Ноя 12, 2014 14:07   Re: Локальные переменные Ответить с цитатой
Полезность: Нет оценки
Random пишет:

Логично.
pragma SERIALLY_REUSABLE командует очищать переменные сразу, как только сессия переходит от состояния ACTIVE в любое другое.
Попробуйте dbms_session.reset_package.


Страшная сила заключена в вызове reset_package - The RESET_PACKAGE procedure resets all package states for the session (http://www.toadworld.com/platforms/oracle/w/wiki/3233.dbms-session-reset-package.aspx)
Может есть другой безопасный способ очистить переменные в локальном описании ?!
Random
Эксперт
Резидент CftClub


Вступление в Клуб: 27.06.2011
СообщениеСр Ноя 12, 2014 14:43   Re: Локальные переменные Ответить с цитатой
Полезность: 1
Every пишет:
Random пишет:

Логично.
pragma SERIALLY_REUSABLE командует очищать переменные сразу, как только сессия переходит от состояния ACTIVE в любое другое.
Попробуйте dbms_session.reset_package.


Страшная сила заключена в вызове reset_package - The RESET_PACKAGE procedure resets all package states for the session (http://www.toadworld.com/platforms/oracle/w/wiki/3233.dbms-session-reset-package.aspx)
Может есть другой безопасный способ очистить переменные в локальном описании ?!


Тогда объедините все переменные локального описания в одну структуру, сделайте одну переменную типа этой структуры, и чистите её одну.
Every
Участник со стажем
Неподтвержденный


Вступление в Клуб: 28.12.2008
СообщениеСр Ноя 12, 2014 15:06   Re: Локальные переменные Ответить с цитатой
Полезность: Нет оценки
Random пишет:
Every пишет:
Random пишет:

Логично.
pragma SERIALLY_REUSABLE командует очищать переменные сразу, как только сессия переходит от состояния ACTIVE в любое другое.
Попробуйте dbms_session.reset_package.


Страшная сила заключена в вызове reset_package - The RESET_PACKAGE procedure resets all package states for the session (http://www.toadworld.com/platforms/oracle/w/wiki/3233.dbms-session-reset-package.aspx)
Может есть другой безопасный способ очистить переменные в локальном описании ?!


Тогда объедините все переменные локального описания в одну структуру, сделайте одну переменную типа этой структуры, и чистите её одну.


Так в общем то! Но надо старые операции переписывать, что не очень хочется делать ...
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

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