这几天写的一个任务里面碰到了一个问题.
在定义CURSOR里面所用到的表是SYS用户里面的,而我是用A用户登陆,这个任务必须是在A下面完成,写完后编译的时候,会报错,ORA-00942,相关的几个错误信息也就是表或视图不存在,CURSOR定义不完全之类的.其实表是存在的,CURSOR定义也不存在不完全.很奇怪.我就是手写一段也是可以有结果的,
SELECT * FROM dba_indexes
是可以有查询结果.
通过给A用户DBA权限也没有用.
于是上网查了下相关资料,无意中发现一个跨用户建表的错误也是ORA-00942.其实那个原理和我这个也差不多,
说用了grant all on usera.table_a to userc;问题就解决了
于是我也在SYS下登陆,执行了那句grant all on sys.dba_indexes to a;
问题也就迎刃而解.
问题的原因是原本就是要给权限,但是有没有说清楚...