Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 |
|
 |
|