powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вьюхи и процедуры
6 сообщений из 6, страница 1 из 1
Вьюхи и процедуры
    #39393073
akaipbay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вопрос, а можно ли во вьюхе вызвать процедуру??
...
Рейтинг: 0 / 0
Вьюхи и процедуры
    #39393076
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обернув в функцию -- почему бы и нет
А зачем?
...
Рейтинг: 0 / 0
Вьюхи и процедуры
    #39393077
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ведь количество вызовов этой процедуры/функции может быть очень неожиданным пр обращении ко вью
...
Рейтинг: 0 / 0
Вьюхи и процедуры
    #39393097
akaipbay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,
да просто хотел при выборке из вьюхи видеть уже актуальные данные которые получаются через процедурку)

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

а щас я должен сначала выполнить процедуру а затем смотреть вьюхуpipelined function
...
Рейтинг: 0 / 0
Вьюхи и процедуры
    #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
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вьюхи и процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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