2011-10-24 90 views
1

我有一個可以在另一個11g環境中編譯好的包。
當我嘗試在具有DBA用戶的XE 10g環境中編譯它時,出現ORA-00942錯誤。Oracle XE 10g:包或程序中的作業調度:DBA_SCHEDULER_JOBS

FOR r IN (SELECT DISTINCT job_name jname 
         FROM dba_scheduler_jobs 
          ^
         WHERE job_name LIKE p_job_prefix || '%') 
    LOOP 
     ... 

當我在表上執行直接選擇沒有問題。

Select * from dba_scheduler_jobs; 

錯誤文本:

Line: 34 Column: 34 Error: PL/SQL: ORA-00942: table or view does not exist 

回答

1

爲了在存儲過程中(默認)一個定義者權限引用一個對象,該過程的所有者必須具有對象的直接訪問。該特權不能通過角色授予,即使是非常強大的角色,如SYSDBA

你可能想授予此過程的所有者的SELECT ANY DICTIONARY特權

GRANT select any dictionary 
    TO <<owner of procedure>> 

你也可以授予每個對象的權限(即DBA_SCHEDULER_JOBS)的個體,但如果你已經授予該用戶的特權SYSDBA ,你可能不太在乎限制贈款。

+0

謝謝,GRANT選擇任何字典到完美適合我的本地DEV。 – ScrappyDev