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

Своя функция в представлении

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
PLS
Участник


Вступление в Клуб: 22.07.2014
СообщениеВт Июл 22, 2014 09:32   Своя функция в представлении Ответить с цитатой
Полезность: Нет оценки
Доброго дня.
Подскажите как в представлении вызвать свою функцию? Что-то типа такого:
type main is
select x(
x.[NUM_DOG_EXT] : NUM_DOG,
x.[CLIENT].[NAME] : CLIENT,
x.[ACCOUNT].[MAIN_V_ID] : ACC,
x.[FINTOOL].[CUR_SHORT] : CURR,
x.[VID_DOG].[NAME] : VID,
x.[FILIAL] : FILIAL,
x.[DEPART] : DEPART,
pr.[ACCOUNT] : ACC,
pr.[CLIENT].[NAME] : CLIENT,
pr.[DATE_GIVE] : DATEG,
main_function(p_date, p_id_cli),
pr.[NUM_DOG] : NUM_DOG
)
in ::[DEPOSIT_PRIV], (::[KRED_PERS]: PR)-----, (select GetCountProdClient (CLIENT, DATEG) : g)
where x.CLIENT = pr.CLIENT
Reddom
Участник со стажем


Вступление в Клуб: 25.01.2013
СообщениеВт Июл 22, 2014 09:53    Ответить с цитатой
Полезность: Нет оценки
p_date, p_id_cli - это что?

Попробуй через операцию типа фильтр.
PLS
Участник


Вступление в Клуб: 22.07.2014
СообщениеВт Июл 22, 2014 10:30    Ответить с цитатой
Полезность: Нет оценки
Это вот так правильней main_function(DATEG, CLIENT).
Просто хочу понять, такого рода конструкции работают в представлении?
Скажем в PL/SQL в селекте можно так сделать.
Reddom
Участник со стажем


Вступление в Клуб: 25.01.2013
СообщениеВт Июл 22, 2014 10:50    Ответить с цитатой
Полезность: Нет оценки
Суть такая, функция твоя должна быть глобальной (например, глобальные описания операции типа библиотека), желательно RESTRICT_REFERENCES WNDS(does not modify database tables) и WNPS(does not change the values of packaged variables)(pragma RESTRICT_REFERENCES(функция, WNDS, WNPS); ).
Дальше в представлении вызываешь ее как [ТБП]::[БИБЛИОТЕКА].функция(параметр1, параметр2).

Так как представление становиться вью, а вью это sql запрос. Дальше можно почитать про вью в документации oracle.


Последний раз редактировалось: Reddom (Вт Июл 22, 2014 11:46), всего редактировалось 1 раз
PLS
Участник


Вступление в Клуб: 22.07.2014
СообщениеВт Июл 22, 2014 10:56    Ответить с цитатой
Полезность: Нет оценки
Про ORACLE понятно. Работаю давно.
Ок. Спасибо. Попробую.
ezhem
Участник со стажем


Вступление в Клуб: 22.05.2008
СообщениеСр Июл 23, 2014 14:40    Ответить с цитатой
Полезность: Нет оценки
Если нужно описать какую-то функцию, то как правило создается фильтр на представление и в нем можно описать функцию.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПн Июл 28, 2014 10:48   Re: Своя функция в представлении Ответить с цитатой
Полезность: Нет оценки
PLS пишет:
Доброго дня.
Подскажите как в представлении вызвать свою функцию? Что-то типа такого

функцию как отдельную сущность Oracle в pl/plus без приседаний вызвать нельзя.
Можно вызвать функцию из пакета, а ещё лучше - из операции.

select a(::[RUNTIME].[F].a(бла-бла) ) in dual%rowtype;
ezhem
Участник со стажем


Вступление в Клуб: 22.05.2008
СообщениеПт Авг 01, 2014 08:02   Re: Своя функция в представлении Ответить с цитатой
Полезность: Нет оценки
Random пишет:
PLS пишет:
Доброго дня.
Подскажите как в представлении вызвать свою функцию? Что-то типа такого

функцию как отдельную сущность Oracle в pl/plus без приседаний вызвать нельзя.
Можно вызвать функцию из пакета, а ещё лучше - из операции.

select a(::[RUNTIME].[F].a(бла-бла) ) in dual%rowtype;


Вопрос проще стоит, вызвать функцию как колонку в представлении,

Select x ((::[RUNTIME].[F].a(бла-бла)
)

Не нужно никаких прседаний
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПт Авг 01, 2014 08:32   Re: Своя функция в представлении Ответить с цитатой
Полезность: Нет оценки
ezhem пишет:
Random пишет:
PLS пишет:
Доброго дня.
Подскажите как в представлении вызвать свою функцию? Что-то типа такого

функцию как отдельную сущность Oracle в pl/plus без приседаний вызвать нельзя.
Можно вызвать функцию из пакета, а ещё лучше - из операции.

select a(::[RUNTIME].[F].a(бла-бла) ) in dual%rowtype;


Вопрос проще стоит, вызвать функцию как колонку в представлении,

Select x ((::[RUNTIME].[F].a(бла-бла)
)

Не нужно никаких прседаний


Не путай сущности.
нужно отличать create function от create package
ezhem
Участник со стажем


Вступление в Клуб: 22.05.2008
СообщениеСр Авг 06, 2014 08:31   Re: Своя функция в представлении Ответить с цитатой
Полезность: Нет оценки
Если на уровне оракла подходить, то согласен.

функции в представлении будут вызываться всеравно из вне, даже если фильтр на представлении создать и в нем прописать.

Random пишет:
ezhem пишет:
Random пишет:
PLS пишет:
Доброго дня.
Подскажите как в представлении вызвать свою функцию? Что-то типа такого

функцию как отдельную сущность Oracle в pl/plus без приседаний вызвать нельзя.
Можно вызвать функцию из пакета, а ещё лучше - из операции.

select a(::[RUNTIME].[F].a(бла-бла) ) in dual%rowtype;


Вопрос проще стоит, вызвать функцию как колонку в представлении,

Select x ((::[RUNTIME].[F].a(бла-бла)
)

Не нужно никаких прседаний


Не путай сущности.
нужно отличать create function от create package
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Авг 06, 2014 10:47   Re: Своя функция в представлении Ответить с цитатой
Полезность: Нет оценки
ezhem пишет:
Если на уровне оракла подходить, то согласен.

Я имею в виду, что PLS хочет именно функцию, созданную как create function. Посмотри внимательно на первый пост.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

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