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

Видимость переменных уровня пакета

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Ответить с цитатой
Полезность: Нет оценки
Понимать так, что вызывается сначала операция - расширение. Может не корректно выразилсяSmile Но хочу получить значение прагмой в теле базовой операции...
bizon-86
Участник


Вступление в Клуб: 16.02.2012
СообщениеПт Фев 17, 2012 09:38    Ответить с цитатой
Полезность: Нет оценки
А почему шутка? Нет. Или сотрудники ЦФТ не имеют права писать в форум и знают ВСЕ обо всем?Smile
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПт Фев 17, 2012 09:48    Ответить с цитатой
Полезность: Нет оценки
Для понимания проблемы надо бы выложить код всех секций операции и расширения.
bizon-86
Участник


Вступление в Клуб: 16.02.2012
СообщениеПт Фев 17, 2012 09:59    Ответить с цитатой
Полезность: Нет оценки
сейчас стал проверять еще раз и все РАБОТАЕТ ! Как так? Может , что здесь местные админы вчера делали или сделали, а потом исправили. Может обновления какие ставили….не знаю даже…Сегодня работает как и должно по теории работы с данными пакета…

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

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