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

来源:互联网 发布:软件技术优势怎么写 编辑:程序博客网 时间:2024/05/01 09:46

小白今天以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.

 

 

0 0