Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вьюхи и процедуры / 6 сообщений из 6, страница 1 из 1
27.01.2017, 14:30
    #39393073
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вьюхи и процедуры
Такой вопрос, а можно ли во вьюхе вызвать процедуру??
...
Рейтинг: 0 / 0
27.01.2017, 14:32
    #39393076
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вьюхи и процедуры
Обернув в функцию -- почему бы и нет
А зачем?
...
Рейтинг: 0 / 0
27.01.2017, 14:33
    #39393077
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вьюхи и процедуры
Ведь количество вызовов этой процедуры/функции может быть очень неожиданным пр обращении ко вью
...
Рейтинг: 0 / 0
27.01.2017, 14:44
    #39393097
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вьюхи и процедуры
Вячеслав Любомудров,
да просто хотел при выборке из вьюхи видеть уже актуальные данные которые получаются через процедурку)

а щас я должен сначала выполнить процедуру а затем смотреть вьюху
...
Рейтинг: 0 / 0
27.01.2017, 14:46
    #39393099
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вьюхи и процедуры
akaipbayда просто хотел при выборке из вьюхи видеть уже актуальные данные которые получаются через процедурку)

а щас я должен сначала выполнить процедуру а затем смотреть вьюхуpipelined function
...
Рейтинг: 0 / 0
27.01.2017, 15:10
    #39393135
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вьюхи и процедуры
Могу рассказать (не посоветовать! ) еще один забавный вариант, с использованием контекстов
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
tst> create context my_context using fill_ctx_func;

Context created.

tst> create function fill_ctx_func(a number, b varchar2, c varchar2) return number as
  2  begin dbms_session.set_context('MY_CONTEXT', 'VAR1', b); -- Тут можешь заполнять чем угодно
  3        dbms_session.set_context('MY_CONTEXT', 'VAR2', c);
  4        return a;
  5  end;
  6  /

Function created.

tst> create function get_context(n varchar2) return varchar2 as
  2  begin return sys_context('MY_CONTEXT', n); -- Нужно оборачивать в функцию, иначе оно не меняется на протяжении вызова
  3  end;
  4  /

Function created.

tst> column var1 format a20
tst> column var2 format a20
tst> select fill_ctx_func(object_id, object_type, object_name) id,
  2         get_context('VAR1') var1, get_context('VAR2') var2
  3  from all_objects where rownum <= 3;

        ID VAR1                 VAR2
---------- -------------------- --------------------
       101 TABLE                PROPS$
       222 TABLE                DUAL
       223 SYNONYM              DUAL

tst> drop context my_context;

Context dropped.

tst> drop function fill_ctx_func;

Function dropped.

tst> drop function get_context;

Function dropped.

Причем программер, который все это реализовал (еще в 9-ке) совершенно справедливо отказывается что-либо менять, мотивируя, что "работает -- не трожь!"
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вьюхи и процедуры / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]