Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
danzki Участник - экстремал
Вступление в Клуб: 30.09.2010
|
Пн Сен 29, 2014 14:18  Перегрузка функции |
|
Полезность: Нет оценки
|
Добрый всем день!
Можно ли в Администраторе словаря реализовать перегрузку функции?
Если две функции, выполняющие одно и то действие для разным Продуктов (Кредит, Депозит)
Код: | get_smth(p_cred ref [PR_CRED])
и
get_smth(p_depn ref [DEPN]) |
На выходе у обеих один тип данных.
При компиляции пакета пишет ошибки [PR_CRED] и [DEPN] не совместимы и тд |
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Пн Сен 29, 2014 15:48  Re: Перегрузка функции |
|
Полезность: Нет оценки
|
danzki пишет: | Добрый всем день!
Можно ли в Администраторе словаря реализовать перегрузку функции?
Если две функции, выполняющие одно и то действие для разным Продуктов (Кредит, Депозит)
Код: | get_smth(p_cred ref [PR_CRED])
и
get_smth(p_depn ref [DEPN]) |
На выходе у обеих один тип данных.
При компиляции пакета пишет ошибки [PR_CRED] и [DEPN] не совместимы и тд |
На уровне пакетов все это транслируется в
get_smth(p_cred in number),
get_smth(p_depn in number)
Так что, именно так - не получится. |
|
 |
danzki Участник - экстремал
Вступление в Клуб: 30.09.2010
|
Пн Сен 29, 2014 16:18   |
|
Полезность: Нет оценки
|
Да, точно.
Есть вариант в одну из функций параметр добавить
Код: | get_smth(p_cred ref [PR_CRED]);
get_smth(p_depn ref [DEPN], p_adds string); |
|
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Вт Сен 30, 2014 07:41  Re: Перегрузка функции |
|
Полезность: Нет оценки
|
prankster пишет: | danzki пишет: | Добрый всем день!
Можно ли в Администраторе словаря реализовать перегрузку функции?
Если две функции, выполняющие одно и то действие для разным Продуктов (Кредит, Депозит)
Код: | get_smth(p_cred ref [PR_CRED])
и
get_smth(p_depn ref [DEPN]) |
На выходе у обеих один тип данных.
При компиляции пакета пишет ошибки [PR_CRED] и [DEPN] не совместимы и тд |
На уровне пакетов все это транслируется в
get_smth(p_cred in number),
get_smth(p_depn in number)
Так что, именно так - не получится. |
Делаем так:
в DEPN и в PR_CRED заводим простые операции с одинаковым именем OPER.
В теле операции пишем:
Код: |
declare
n number;
begin
cast_to(DEPN_REF, n).OPER;
cast_to(PR_CRED_REF, n).OPER;
end;
|
|
|
 |
timofeev Участник со стажем
Вступление в Клуб: 27.04.2012
|
Вт Сен 30, 2014 13:36   |
|
Полезность: Нет оценки
|
А я бы так написал:
get_smth(p_prod ref [PRODUCT])
а внутри, если надо надо использовать реквизиты продуктов
p_prod->(PR_CRED)[xxx]
если надо понять, что пришло на вход функции, то можно так
if p_prod%class='PR_CRED' then
или еще что-то похожее |
|
 |
danzki Участник - экстремал
Вступление в Клуб: 30.09.2010
|
Ср Окт 01, 2014 15:54   |
|
Полезность: Нет оценки
|
timofeev пишет: | А я бы так написал:
get_smth(p_prod ref [PRODUCT])
а внутри, если надо надо использовать реквизиты продуктов
p_prod->(PR_CRED)[xxx]
если надо понять, что пришло на вход функции, то можно так
if p_prod%class='PR_CRED' then
или еще что-то похожее |
Реализовал что-то подобное |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|