Oracle存储过程ORA-00942: 表或视图不存在问题解决
2017-08-22 12:02
1421 查看
今天在写存储过程的时候,发现一个很诡异的问题,存储过程里就一个最简单的SELECT动态SQL语句。编写完成以后,执行这个存储过程,总是提示ORA-00942:
table or view does not exist(ERROR -942 ORA-00942: 表或视图不存在)这个错误,但是我将这个SQL语句复制出来,单独在命令行运行,而又没有任何错误。很纠结,很纳闷,很无解,好好的一个SELECT语句,在命令行里就可以执行,放到存储过程就会出错了,怎么就不对了?
后来经过Google,分析和总结,最终找到了答案。为了满足有的读者就是为了找到解决问题的答案,而并不需要接下来长篇大论的分析,我这里就先给出答案。
角色在函数、存储过程、触发器中都是失效的,也就是说,用户从角色继承过来的权限,不能在函数、存储过程、触发器中使用。在函数、存储过程、触发器中,如果要访问其他用户的对象,需要显式地给用户授予访问的权限。
上面也说了,由于对用户jelly2赋予的是DBA角色,而角色权限在存储过程中是失效的,所以,为了防止访问权限失效,我们需要显示的对jelly2用户赋予访问jelly.tb_student表的权限。
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;
相关文章推荐
- ORACLE的问题解决:Ora-00942:表或视图不存在
- [转载]ORA-00942 表或视图不存在 问题的解决
- 关于"ORA-00942 表或视图不存在" 问题的解决方法
- ORA-00942 表或视图不存在 问题的解决
- ORACLE的问题解决:Ora-00942:表或视图不存在
- ORACLE的问题解决:Ora-00942:表或视图不存在
- ORA-00942 表或视图不存在 问题的解决
- [转载]ORA-00942 表或视图不存在 问题的解决
- ORA-00942: 表或视图不存在 "的原因和解决方法
- ORACLE数据库---"ORA-00942: 表或视图不存在 "的原因和解决方法---续
- "ORA-00942: 表或视图不存在 "的原因和解决方法
- ORA-00942 表或视图不存在解决方法
- oracle表或视图不存在和标识符无效的问题解决
- 20120327_psdi.mbo.SYNONYMDomainInfoFactory.load 数据库导出问题所致 ORA-00942: 表或视图不存在&关于imp exp
- job调用过程报错 ORA-00942: 表或视图不存在,权限问题
- "ORA-00942: 表或视图不存在" 的原因和解决方法
- ORA-00942 表或视图不存在解决办法
- "ORA-00942: 表或视图不存在 "的原因和解决方法
- oracle新建用户导入scott的表,解决新用户查询scott表时出现表或视图不存在的问题
- ORA-00942: 表或视图不存在解决方法