Oracle:角色,表,权限为矩阵

时间:2013-05-22 14:49:21

标签: oracle matrix roles privileges

在Oracle中有一个名为role_tab_privs的视图 详细说明了授予角色的表权限。 它有这样的行(不是所有列都显示):

Table       Role        Privilege

table1      role1       SELECT
table1      role1       UPDATE
table2      role1       INSERT

我希望能够将其显示为矩阵,如下所示:

Role: role1

Table     SELECT     INSERT      UPDATE     DELETE      ALTER      EXECUTE

table1     YES        YES         YES        NO          NO         NO
table2     YES         NO          NO        NO          NO         NO
etc.

我不确定如何在sql中执行此操作。

另一个复杂因素是角色授予可以是分层的, 如果ROLE B被授予角色A,则角色B具有 所有ROLE A的特权。在上述背景下 报告,要获得一个完整的列表,必须递归 遍历角色层次结构。

1 个答案:

答案 0 :(得分:0)

你的答案就在这里

SELECT role,TABLE_NAME,
       DECODE(PRIVILEGE,'SELECT','YES','NO') "SELECT",
       DECODE(PRIVILEGE,'INSERT','YES','NO') "INSERT",
       DECODE(PRIVILEGE,'UPDATE','YES','NO') "UPDATE",
       DECODE(PRIVILEGE,'DELETE','YES','NO') "DELETE",
       DECODE(PRIVILEGE,'ALTER','YES','NO') "ALTER",
       DECODE(PRIVILEGE,'EXECUTE','YES','NO') "EXECUTE"
FROM role_tab_privs
ORDER BY role;