[Oracle] Не видит синоним в процедуре
От: DaDa Cloun Россия  
Дата: 25.10.07 08:05
Оценка:
Есть у меня две схемы user_a и user_b. В user_a есть пакет user_a.ope_util. Так же есть роль role_read которая имеет привелегию execute user_a.ope_util, и назначена эта роль user_b.
Затем я создаю у user_b синоним на пакет user_a.ope_util. В результате запросы от user_b типа:
select ope_util.exist_index('dsd') from dual;

CREATE OR REPLACE
PROCEDURE PROCEDURE1 AS
l_var NUMBER;
BEGIN
  select ope_util.exist_index('dsd') into l_var from dual;
END PROCEDURE1;
/

нормально выполняются, а вот процедура
CREATE OR REPLACE
PROCEDURE PROCEDURE1 AS
l_var NUMBER;
BEGIN
  select ope_util.exist_index('dsd') into l_var from dual;
  if ope_util.exist_index('ddd') = 0 then --на эту строку ошибка
    null;
  end if;
  
END PROCEDURE1;

Не компилиться с ошибкой на выделенной строке:

PROCEDURE USER_B.PROCEDURE1@user_b
Error(6,3): PL/SQL: Statement ignored
Error(6,6): PLS-00201: identifier 'OPE_UTIL' must be declared

Почему такое использование не проходит? Такая же ситация и с любой процедурой и функциями. Т.е. в запросах выполняется, а в Pl/SQL коде — нет.

Спасибо за внимание.
Re: [Oracle] Не видит синоним в процедуре
От: DaDa Cloun Россия  
Дата: 25.10.07 08:08
Оценка:
begin
  if ope_util.exist_index('ddd') = 0 then
    null;
  end if;
end;


такой код тоже работает без ошибок
Re: [Oracle] Не видит синоним в процедуре
От: zorgio  
Дата: 25.10.07 08:13
Оценка:
Здравствуйте, DaDa Cloun, Вы писали:

DC>Есть у меня две схемы user_a и user_b. В user_a есть пакет user_a.ope_util. Так же есть роль role_read которая имеет привелегию execute

Дай права юзеру user_b на пакет не через роль , а напрямую .
..и пусть умоются кровью те кто сомневается в нашем миролюбии.....
Re[2]: [Oracle] Не видит синоним в процедуре
От: DaDa Cloun Россия  
Дата: 25.10.07 08:41
Оценка:
Здравствуйте, zorgio, Вы писали:

Z>Здравствуйте, DaDa Cloun, Вы писали:


DC>>Есть у меня две схемы user_a и user_b. В user_a есть пакет user_a.ope_util. Так же есть роль role_read которая имеет привелегию execute

Z>Дай права юзеру user_b на пакет не через роль , а напрямую .

Ничего себе!? Спасибо громадное!! Не ожидал от Оракла такого =)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.