Как создать роль в процедуре в pl / sql? - PullRequest
0 голосов
/ 06 ноября 2018

Я хотел бы знать, как я могу создать роль для процедуры в Oracle. Эта процедура должна (не глобально) позволить пользователю изменять роли и удалять их.

   create or replace PROCEDUR MY_ROLE(Name VARCHAR2) IS
   BEGIN
   DBMS_Output.put_line('You've got the right ' || Name );
    --EXECUTE IMMEDIATE CONCAT('grant some_role to Username' , Name);
   INSERT INTO FG7.ROLE values(Name);

   END MY_ROLE;

спасибо! * * 1004

1 Ответ

0 голосов
/ 06 ноября 2018

Я думаю, что правильный подход заключается в создании роли, предоставлении роли пользователю, а затем SET РОЛЬ:

EXECUTE IMMEDIATE 'SET ROLE '||some_role;

Используйте

EXECUTE IMMEDIATE 'SET ROLE NONE';

чтобы сбросить роль снова. Конечно, когда вы предоставляете роль пользователю, она не должна быть установлена ​​как DEFAULT ROLE.

Проблема с GRANT some_role TO ... заключается в том, что она вступает в силу только после повторного входа пользователя в систему.

Вы также можете использовать DBMS_SESSION.SET_ROLE('some_role'); и DBMS_SESSION.IS_ROLE_ENABLED('some_role'), чтобы проверить, включена ли роль. См. DBMS_SESSION.SET_ROLE

...