0

我执行以下命令来撤销用户执行特定 SP 的权限:

REVOKE EXECUTE ON SOME.SP_NAME FROM SOME_USER;

我想查询一下执行权限是否被成功撤销。

是否有一些查询会向我显示所有权限SOME_USERSOME.SP_NAME以便我现在可以直观地验证这EXECUTE不是其中之一。

4

1 回答 1

2
select * from all_tab_privs where grantee = 'SOME_USER' and table_name = 'SP_NAME' and table_schema = 'SOME'

编辑:

ALL_TAB_PRIVS 工作正常。这是我自己的一个会话:

SQL> create procedure myproc is begin null; end;
  2  /

Procedure created.

SQL> grant execute on myproc to x11414;

Grant succeeded.

SQL> select * from all_tab_privs where table_name = 'MYPROC';

GRANTOR                        GRANTEE                                          
------------------------------ ------------------------------                   
TABLE_SCHEMA                   TABLE_NAME                                       
------------------------------ ------------------------------                   
PRIVILEGE                                GRA HIE                                
---------------------------------------- --- ---                                
W13582                         X11414                                           
W13582                         MYPROC                                           
EXECUTE                                  NO  NO                                 


SQL> revoke execute on myproc from x11414;

Revoke succeeded.

SQL> select * from all_tab_privs where table_name = 'MYPROC';

no rows selected

编辑#2:如果您可以访问它,DBA_TAB_PRIVS 可能会更好。ALL_TAB_PRIVS 仅限于:

授予用户是授予者、被授予者、所有者或启用的角色或 PUBLIC 是被授予者的对象

于 2012-06-08T15:47:48.513 回答