微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle存储过程ORA-00942: 表或视图不存在问题解决

今天在写存储过程的时候,发现一个很诡异的问题,存储过程里就一个最简单的SELECT动态sql语句。编写完成以后,执行这个存储过程,总是提示ORA-00942: table or view does not exist(ERROR -942 ORA-00942: 表或视图不存在)这个错误,但是我将这个sql语句复制出来,单独在命令行运行,而又没有任何错误。很纠结,很纳闷,很无解,好好的一个SELECT语句,在命令行里就可以执行,放到存储过程就会出错了,怎么就不对了?

后来经过Google,分析和总结,最终找到了答案。为了满足有的读者就是为了找到解决问题的答案,而并不需要接下来长篇大论的分析,我这里就先给出答案。

角色在函数、存储过程、触发器中都是失效的,也就是说,用户从角色继承过来的权限,不能在函数、存储过程、触发器中使用。在函数、存储过程、触发器中,如果要访问其他用户的对象,需要显式地给用户授予访问的权限。

上面也说了,由于对用户jelly2赋予的是DBA角色,而角色权限在存储过程中是失效的,所以,为了防止访问权限失效,我们需要显示的对jelly2用户赋予访问jelly.tb_student表的权限。

grant select any table to jelly2;

原文地址:https://www.jb51.cc/oracle/207999.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐