ORA-04042 procedure, function, package, or package body does not exist

lansesl2008發表於2014-01-03

小白今天以sys使用者執行一條sql語句,報錯如下:

GRANT EXECUTE ON SYS.KILL_SESSION TO wsj;
*ERROR at line 1:
ORA-04042: procedure, function, package, or package body does not exist

報錯資訊顯示,某個儲存過程,函式,package,package body不存在,小白細想了一下,這裡所說的錯誤物件應該是SYS.KILL_SESSION,而sys是使用者,也就是說sys使用者下,沒有KILL_SESSION的儲存過程或者函式或者package或者package body??

於是小白去另外一個環境linux01中執行了sql語句:GRANT EXECUTE ON SYS.KILL_SESSION TO wsj; 執行成功,在linux101上面檢視了一下KILL_SESSION到底是什麼物件,查詢結果:Procedure

在linux101上面找到了KILL_SESSION相應的sql語句,如下:

 

create or replace procedure kill_session
(
    sessionid         in    varchar2    --session id
)
is
   session varchar2(200);
   str1 varchar2(255);
   str2 varchar2(255);
begin
  session := sessionid;
  str1 := ' alter system kill session ';
  str2 := str1 || '''' || session || '''';
  --dbms_output.put_line(str2);
  execute immediate str2;

end kill_session;

在那個sql語句執行不了的環境把上面德sql刷進去,問題解決:

SQL> grant EXECUTE ON SYS.KILL_SESSION TO wsj;

Grant succeeded.

 

 

相關文章