powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование одних и тех жепредставлений для различных схем
8 сообщений из 8, страница 1 из 1
Использование одних и тех жепредставлений для различных схем
    #39354981
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе всем!
Не подскажите возможно ли следующее Использование одних и тех же представлений
разными пользователями, но чтобы представления смотрели именно в свои данные.
Ситуация: На сервере с различными схемами есть пакет одинаковых представлений (view), которые должны быть всегда идентичны на всех схемах. Смотрит каждое представление на данные (таблицы, представления) соответственно только в в своей схеме.

Возможно ли развернуть представления на какой-либо одной схеме, чтобы при обращении к ней через синонимы каждый пользователь видел только свои данные?
Как такие представления сделать, переделать
Ткните в мануал если такое можно :)
...
Рейтинг: 0 / 0
Использование одних и тех жепредставлений для различных схем
    #39355018
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorSm,

Начиная с 12й версии что-то такое варганить вроде можно.
изучай BEQUEATH CURRENT_USER (ну и authid current_user вместе с accessible by до кучи )
...
Рейтинг: 0 / 0
Использование одних и тех жепредставлений для различных схем
    #39355020
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby,
Спасибо уже изучил . Но у меня 11-я :(
...
Рейтинг: 0 / 0
Использование одних и тех жепредставлений для различных схем
    #39355023
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorSm,

ну, можно подняться до 12й, а можно решить, что такой баян на самом деле не нужен,
можно, чтобы музыка играла, попробовать впрячься в authid current_user в комбинации с pipelined function.

То есть - выбор всегда есть.
Главное, точно понимать - что ты хочешь сделать и зачем .
А еще главнее - верить в то, что выявленное зачем не является ложной целью.
...
Рейтинг: 0 / 0
Использование одних и тех жепредставлений для различных схем
    #39355130
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby,еще раз спасибо.
Первоначально думал, что уже все сделано и сто лет назад, в 10-х, 11-версиях.
Только я мимо прошел. А оказалось, что не было, хотя и напрашивается фича.

А тут да, возможно, овчинка выделки не стоит.
Проще скриптс автозаменой по всем схемам сделать
Зато теперь я знаю о такой реализации в 12-й , может на других проектах применить можно будет.
Ну и про функции нужно покурить
...
Рейтинг: 0 / 0
Использование одних и тех жепредставлений для различных схем
    #39355144
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще можно и без функций...

Код: plsql
1.
2.
3.
4.
5.
6.
7.
create or replace view MASTER.V_TABLE
as 
select * from OWNER1.TABLE
where  SYS_CONTEXT ('USERENV', 'SESSION_USER') = 'OWNER1'
union all
select * from OWNER2.TABLE
where SYS_CONTEXT ('USERENV', 'SESSION_USER') = 'OWNER2'



перед этим делаем grant select on OWNER<N>.TABLE to MASTER with grant option

Но вот только зачем?
...
Рейтинг: 0 / 0
Использование одних и тех жепредставлений для различных схем
    #39355262
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MazoHist,

незачем. Громоздко и неаккуратненько :)
...
Рейтинг: 0 / 0
Использование одних и тех жепредставлений для различных схем
    #39355264
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А с функциями интересная тема.
Пока набросал такой тестовый примерчик
В одной схеме создал
Код: 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.
create type TypetObjectTest as object 
(
 id  number,
type varchar2(10)
);
create type TypetList as table of TypetObjectTest;
CREATE OR REPLACE function TEST_SCHEMA2.FunctionTest(pObject_type in varchar2)
          return TypetList pipelined 
          AUTHID CURRENT_USER
          as 
sql_text varchar2(1500):='SELECT id,type from MYPIPE';
  type tCur_id is REF CURSOR;
  Cur_id tCur_id;
   f_id  number;
    f_type varchar2(10);     
begin
OPEN Cur_id FOR sql_text ;
LOOP 
FETCH Cur_id INTO f_id,f_type;
EXIT WHEN Cur_id%NOTFOUND; 
 pipe row (TypetObjectTest(f_id,f_type));    
  end loop;
  close Cur_id;
 return;
end;
GRANT execute on TEST_SCHEMA2.FunctionTest  to TEST_SCHEMA;

/



В другой TEST_SCHEMA соответственно

Код: plsql
1.
2.
3.
4.
5.
6.
create TABLE MYPIPE
(
 id  number,
type varchar2(10)
);
select * from table(TEST_SCHEMA2.FunctionTest('')) t
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование одних и тех жепредставлений для различных схем
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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