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权限。

猜你喜欢

转载自blog.csdn.net/guogang83/article/details/79957164
今日推荐