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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值