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

Перегрузка функции

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


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

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