Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
bizon-86 Участник
Вступление в Клуб: 16.02.2012
|
Чт Фев 16, 2012 21:45  Видимость переменных уровня пакета |
|
Полезность: Нет оценки
|
Всем привет! Подскажите , плз, не могу пока разобраться:
есть операция, в которой объявлена переменная-ссылка в локальных описаниях. В секции проверки эта переменная получает некое значение ссылки. В теле же, чтобы посмотреть значение переменной после вызова проверки, вызываю pragma error(переменная-ссылка).
На операцию создана операция-расширение с вызовом через макросы секций проверки и тела и больше ничего.
Pragma Serially_Reusable не используется. И вообще нет прагм в этих операциях.
Не могу понять, почему получаю null-е значение при вызове операции - расширения?
Ведь процедурам VALIDATE и EXECUTE пакета базовой операции значение переменной-ссылки должно быть доступно....т.к. оно хранится на время сессии или я ошибаюсь? Такое ощущение, что почему-то идет повторная инициализация пакета, либо новое подключение создается...
Подскажите, плз! |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пт Фев 17, 2012 08:30   |
|
Полезность: Нет оценки
|
То что объявлено в локальных описаниях, в расширение не увидите.
Видимостью обладают переменные, в определенном порядке в расширении (зависит , с какой стороны от макроса в расширении вы выводите прагма еррор)
вырезка из документации
В операциях-расширениях и в операциях, наследующих форму другой операции, определены следующие макросы для обращения к базовой (расширяемой) операции (или операции – владельцу формы):
• &BASE$EXECUTE – вызов тела базовой операции (передаются одноименные параметры операции-расширения);• &BASE$VALIDATE – вызов валидатора базовой операции (передаются одноименные параметры операции-расширения);• &BASE$SETVARS – установка глобальных переменных базовой операции из глобальных переменных операции-расширения;• &BASE$GETVARS – установка глобальных переменных операции-расширения из глобальных переменных базовой операции. |
|
 |
bizon-86 Участник
Вступление в Клуб: 16.02.2012
|
Пт Фев 17, 2012 09:08   |
|
Полезность: Нет оценки
|
Я же ведь не в расширении прагму еррор вставляю, а в теле базовой операции. Из расширения понятно, что ничего не увижу... |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пт Фев 17, 2012 09:22   |
|
Полезность: Нет оценки
|
> Не могу понять, почему получаю null-е значение при вызове >операции - расширения?
Это как понимать ?
p.s. ЗАО ЦФТ в профиле - это шутка ? |
|
 |
bizon-86 Участник
Вступление в Клуб: 16.02.2012
|
Пт Фев 17, 2012 09:35   |
|
Полезность: Нет оценки
|
Понимать так, что вызывается сначала операция - расширение. Может не корректно выразился Но хочу получить значение прагмой в теле базовой операции... |
|
 |
bizon-86 Участник
Вступление в Клуб: 16.02.2012
|
Пт Фев 17, 2012 09:38   |
|
Полезность: Нет оценки
|
А почему шутка? Нет. Или сотрудники ЦФТ не имеют права писать в форум и знают ВСЕ обо всем? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пт Фев 17, 2012 09:48   |
|
Полезность: Нет оценки
|
Для понимания проблемы надо бы выложить код всех секций операции и расширения. |
|
 |
bizon-86 Участник
Вступление в Клуб: 16.02.2012
|
Пт Фев 17, 2012 09:59   |
|
Полезность: Нет оценки
|
сейчас стал проверять еще раз и все РАБОТАЕТ ! Как так? Может , что здесь местные админы вчера делали или сделали, а потом исправили. Может обновления какие ставили….не знаю даже…Сегодня работает как и должно по теории работы с данными пакета…
Думаю, что вопрос исчерпан. Спасибо большое за ответы, Владимир! |
|
 |
|