2010-01-19 50 views
3

Oracle中的一個缺陷是,有時如果您在SQLplus中運行查詢但您不能在運行從存儲過程查詢。爲了從存儲過程運行查詢,您需要直接授予對象,而不是通過角色獲得的授予。如何確定是否直接或通過角色獲得選擇授予

如果我在all_tables視圖中看到一個表,我怎麼能知道是否由於直接授予或角色授予而能夠查看此表?

回答

6

看ALL_TAB_PRIVS:

select grantee from all_tab_privs 
where table_schema = 'SCOTT' and table_name='EMP' 
and privilege = 'SELECT'; 

這說明所有受資助,無論是角色或用戶。

+0

這似乎是我正在尋找。它只顯示那些我有選擇權限的表。 謝謝 – Rene 2010-01-19 14:33:35

1

一種方法,看看究竟什麼一個程序將看到的是發出命令:

SET ROLE none 

它禁用當前會話的所有角色。

相關問題