ORA-00942: 表或视图不存在
ORA-06512: 在 "S_DEV.P_GATHER_TABLE_STATS_T",line 74
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权限。