如何在pl / sql中的过程中创建角色?

时间:2018-11-06 12:54:10

标签: oracle plsql ddl

我想知道如何在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;

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为正确的方法是创建一个角色,将该角色授予用户,然后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