在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的特权。在上述背景下 报告,要获得一个完整的列表,必须递归 遍历角色层次结构。
答案 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;