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

Передача this в качестве параметра

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


Вступление в Клуб: 30.09.2010
СообщениеСр Апр 30, 2014 11:14   Передача this в качестве параметра Ответить с цитатой
Полезность: Нет оценки
Добрый день!
Всегда думал, что если есть вызов функции в пакете типа
Код:

MyFuncCall(
       p_param == this
                );


При этом операция (пакет), в которой есть такой вызов, в качестве входных параметров не принимает ТБП типа this.
И если я хочу вызвать этот пакет, чтобы в качестве this использовалось значение переменной этот типа, нужно сделать что-то типа

К примеру есть ТБП [MY_TBP]
Есть пакет [MY_TBP].[MY_PACK], в котором лежит функция MyFunc
Код:

v_var  ref [MY_TBP];
....

begin
...
   v_var.[MY_PACK](...);
...
end;


Как мне в функцию MyFunc в качестве параметра p_par (в него передается this) передать значение v_var? (например, мне нужно вызвать эту операцию из кода, а не ручками).
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеСр Апр 30, 2014 12:25    Ответить с цитатой
Полезность: Нет оценки
Что мешает например так:

Код:
::[MY_TBP].[MY_PACK].MyFuncCall(p_param == v_var);

_________________
всегда есть как минимум 2 выхода
danzki
Участник - экстремал


Вступление в Клуб: 30.09.2010
СообщениеСр Апр 30, 2014 13:15    Ответить с цитатой
Полезность: Нет оценки
У пакета [MY_PACK] во входных параметрах нет параметра с нужным ТБП, т.к. v_var в пакет не передается.

v_var.[MY_PACK] вроде работает.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеСр Апр 30, 2014 14:32    Ответить с цитатой
Полезность: Нет оценки
danzki пишет:
У пакета [MY_PACK] во входных параметрах нет параметра с нужным ТБП, т.к. v_var в пакет не передается.

v_var.[MY_PACK] вроде работает.


В такой интерпритации отрабатывает только тело..
у тебя функция в локальных реализована и в глобальных описана?

или она реализована в теле?
_________________
всегда есть как минимум 2 выхода
danzki
Участник - экстремал


Вступление в Клуб: 30.09.2010
СообщениеПн Май 05, 2014 10:14    Ответить с цитатой
Полезность: Нет оценки
Это дистрибутив.
Мне нужно, чтобы только тело отработало.
Поэтому я использовал v_var.[MY_PACK]

Спасибо!
danzki
Участник - экстремал


Вступление в Клуб: 30.09.2010
СообщениеПн Май 05, 2014 10:18    Ответить с цитатой
Полезность: Нет оценки
Не понял сразу вопроса..

Функция вызывается в теле пакета.
В глобальных ее нет, поэтому вызвать, не вывзав весь пакет нельзя.

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

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