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