Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный  [new]
Пгуые123
Guest
День добрый!
В двух словах вот так:
Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный.
функция по id сессии в некоторой табличке надоходит нужный идентификатор пользователя приложения. Но при вызове этой функции из политики безопаснсоти возвращает null. Видимо, оракле запускает эту функцию от своей сессии, а не от сессии пользователя и поэтому данные не те...
Так или не так? и как можно это побороть?
22 мар 07, 13:55    [3928780]     Ответить | Цитировать Сообщить модератору
 Re: Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8129
Уважаем{ый | ая | ое) Пгуые123!

Приведите код функции, протокол ваших действий и прочие скрипты.

Полезно будет ознакомиться с Источником
22 мар 07, 14:42    [3929079]     Ответить | Цитировать Сообщить модератору
 Re: Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный  [new]
Пгуые123
Guest
SQL*Plus
Уважаемое Пгуые123!

Приведите код функции, протокол ваших действий и прочие скрипты.

  function p_1(p_schema in varchar2,
                    p_object in varchar2)
  return varchar2
  as
  emp_id number;
  begin
  
  begin
    select aus.emp_id into emp_id 
    from t_audsess aus
    where aus.oraid = sys_context('userenv', 'sessionid');
  exception 
    when no_data_found then
     emp_id := 0;
  end; 
  
  return 'id = '||emp_id||'/*'||userenv('sessionid')||'*/';
end p_client; 
таблица t_audsess содержит сопоставление ораковой сессии и некий id. Данные в эту таблицу заносятся клиентским приложением.
Соответственно, если я просто из кл приложения вызываю эту функцию, то она возвращает нормальные данные - ожидаемые (те нужный id).
Но при просмотре таблиц, к которым это правило прикручено видно, что функция возвращает не то, что надо, а id = 0.
22 мар 07, 15:03    [3929197]     Ответить | Цитировать Сообщить модератору
 Re: Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный  [new]
Stax.
Guest
Какая версия?
напр в восьмерке я намучился с этой DBMS_RLS

зы
по неопытности допустил ГРУБУЮ ошибку,
навесил политики на таблицы, но лень переделывать
.....
stax
22 мар 07, 15:05    [3929212]     Ответить | Цитировать Сообщить модератору
 Re: Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный  [new]
Пгуые123
Guest
((( У меня 8
Щас предполагаю так и делать.. на каждую таблицу по функции...
22 мар 07, 15:10    [3929240]     Ответить | Цитировать Сообщить модератору
 Re: Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный  [new]
Stax.
Guest
Пгуые123
((( У меня 8
Щас предполагаю так и делать.. на каждую таблицу по функции...

На девятку/десятку не планируете переходить?

В восьмерке у меня не получилось достучатся
к глобальным переменным пакета

зы
я сдуру тож на таблицы навесил, теперь жалею
.....
stax
22 мар 07, 15:57    [3929554]     Ответить | Цитировать Сообщить модератору
 Re: Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный  [new]
Пгуые123
Guest
Как догадался, Stax, что собираемся?

Но щас надо как-то это разрулить... ((( ато до 9 можу и недожить (((
22 мар 07, 16:11    [3929645]     Ответить | Цитировать Сообщить модератору
 Re: Ф-ия возвращает правильный предикат, а при вызове из DBMS_RLS не правильный  [new]
Stax.
Guest
Пгуые123
Как догадался, Stax, что собираемся?

Но щас надо как-то это разрулить... ((( ато до 9 можу и недожить (((


Советую подождать
Имхо в девятке будет легче с DBMS_RLS
просто жалко вложенного в 8-ку труда
.....
stax
22 мар 07, 16:23    [3929738]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить