0

在 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 授予 ROLE A,则角色 B 具有 ROLE A 的所有权限。在上述报告的上下文中,要获得完整的列表,必须递归遍历角色层次结构。

4

1 回答 1

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;
于 2013-10-25T11:23:59.063 回答