我想知道用戶是否對某個對象有特權。如何知道用戶是否對Object有特權?
我正在使用SQL Developer。
當我手動查詢表DBA_TAB_PRIVS,我得到所有需要的信息。
不過,我需要一些觸發器和函數中使用這些信息。
所以,我寫PL/SQL函數,將返回1,如果一個角色擁有的特權,否則爲0。
CREATE OR REPLACE FUNCTION HAS_PRIVILEGE_ON_OBJECT(rolename IN VARCHAR2,
objectname IN VARCHAR2,
objectowner IN VARCHAR2,
privilegename IN VARCHAR2)
RETURN NUMBER
AS
output NUMBER;
BEGIN
SELECT count(*) INTO output
FROM dba_tab_privs
WHERE grantee = rolename
AND owner = objectowner
AND table_name = objectname
AND privilege = privilegename;
IF output > 0 THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END has_privilege_on_object;
功能無法編譯,並說:
ORA 942:表或視圖不存在。
連接的用戶可以訪問視圖DBA_TAB_PRIVS,因爲我可以查詢它,但試圖使用函數自動執行它時。它不起作用。
有什麼想法嗎?
開門見山!太好了!謝謝 –