Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как проверить имеется ли у пользователя роль?  [new]
Erik
Member [заблокирован]

Откуда:
Сообщений: 47
В SQL все замечательно выпольняется:
SELECT COUNT(*) FROM USER_ROLE_PRIVS WHERE GRANTED_ROLE = 'MY_ADMIN'
Но как только я пытаюсь выполнить это в SP получаю роль для владельца SP. Эта роль еще неназначена пользователю. У пользователя 2 роли, причем одна с паролем. Тоесть я немогу сделать set role all.
14 сен 06, 12:51    [3135338]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить имеется ли у пользователя роль?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63939
Блог
Ключевое слово authid спасет отца русской демократии?
14 сен 06, 13:04    [3135494]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить имеется ли у пользователя роль?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Либо я чего-то не понял, либо это
Но как только я пытаюсь выполнить это в SP получаю роль для владельца SP
не могет быть. Из представлений USER_* каждый получает только свое, независимо, в анонимном блоке или в хранимой процедуре. Если посмотреть скрипты создания подобных представлений, везде в WHERE стоит userenv('SCHEMAID')
14 сен 06, 13:10    [3135573]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить имеется ли у пользователя роль?  [new]
Elic
Member

Откуда:
Сообщений: 29976
Erik
SELECT COUNT(*) FROM USER_ROLE_PRIVS WHERE GRANTED_ROLE = 'MY_ADMIN'
Но как только я пытаюсь выполнить это в SP получаю роль для владельца SP.
В хранимом коде с AUTHID DEFINER все выглядит с точки зрения владельца, в том числе и user_*. Варианты:
  • dba_* where ...=user
  • AUTHID CURRENT_USER. С учётом set role это единственный вариант.
  • 14 сен 06, 13:12    [3135589]     Ответить | Цитировать Сообщить модератору
     Re: Как проверить имеется ли у пользователя роль?  [new]
    Elic
    Member

    Откуда:
    Сообщений: 29976
    tru55
    Либо я чего-то не понял,
    Похоже того, что пользователь<>владелец :)
    14 сен 06, 13:15    [3135629]     Ответить | Цитировать Сообщить модератору
     Re: Как проверить имеется ли у пользователя роль?  [new]
    Erik
    Member [заблокирован]

    Откуда:
    Сообщений: 47
    А как это будет ваглядеть в SP?
    SELECT COUNT(*) INTO bKasAdmin
    FROM SESSION_ROLES WHERE ROLE = 'STARVARA_ADMIN';
    ?
    14 сен 06, 14:49    [3136558]     Ответить | Цитировать Сообщить модератору
     Re: Как проверить имеется ли у пользователя роль?  [new]
    Elic
    Member

    Откуда:
    Сообщений: 29976
    Erik
    А как это будет ваглядеть в SP?
    FROM SESSION_ROLES?
    Что "это"?! При чём здесь SESSION_ROLES?!
    SESSION_ROLES - это то, что уже set, а не то, что может быть set.
    14 сен 06, 14:56    [3136619]     Ответить | Цитировать Сообщить модератору
     Re: Как проверить имеется ли у пользователя роль?  [new]
    Erik
    Member [заблокирован]

    Откуда:
    Сообщений: 47
    Извени описался, конечно USER_ROLE_PRIVS.
    14 сен 06, 15:44    [3137023]     Ответить | Цитировать Сообщить модератору
     Re: Как проверить имеется ли у пользователя роль?  [new]
    Erik
    Member [заблокирован]

    Откуда:
    Сообщений: 47
    Синтаксис мне нужен.
    14 сен 06, 15:45    [3137028]     Ответить | Цитировать Сообщить модератору
    Все форумы / Oracle Ответить