Oracle 存储过程中报ORA-00942

前端之家收集整理的这篇文章主要介绍了Oracle 存储过程中报ORA-00942前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
ORA-00942: 表或视图不存在
ORA-06512: 在 "S_DEV.P_GATHER_TABLE_STATS_T",line 74

line 74 EXECUTE IMMEDIATE v_gathertablesql;

v_gathertablesql这条sql就是一个简单的insert select,测试一下,把v_gathertablesql打印出来单独执行,没有错误。此时我想到一个问题,就是这条sql有读取dba_objects,dba_views这样的内部视图,应该少了authid current_user。加上之后没有报错了。

由于用户拥有的role权限在存储过程是不可用的。遇到这种情况,我们一般需要显示授权,如grant create table to user;但这种方法太麻烦,有时候可能需要进行非常多的授权才能执行存储过程。加入authid current_user时存储过程可以使用role权限。

猜你在找的Oracle相关文章