写了四张表的存储过程,并要分别建四个定时任务去执行这四个过程,其中三个存储过程创建,然后创建定时任务,没问题,维有一个始终报错,报的错也看不懂是啥。
于是就在网上查找相关问题码,最后找到一篇文章说是编译存储过程时有错误导致定时任务无法创建,
于是就在网上查找怎么查看编译错误,
后来找到,原来在plsql里,用sqlwindow只能执行sql语句,因为创建存储过程是用create or replace procedure,是sql语句所以能执行,但是如果有错误,是不能报错的。
如果要看到错误,那么需要把创建存储过程的语句放到Programe window里执行,就能看到提示信息了(如果编译有错误的话).
这样执行后,果然有编译错误,哦,对了,在这之前,我打开plsql左边树形结构的procedures里找到无法执行的存储过程,右键后选择test,如果有错误也会提示出来。
这时发现错误提示为表或试图不存在,但是我单独执行这张表的select语句是可以执行的,这就奇怪了,于是再在网上找,原来,这张表用了同义词,普通查询没问题,但是
放到存储过程里就不行了,这时需要给表赋权限,执行下面的语句:
grant select on res_cip to public; 这里的res_cip就是创建同义词的表了,public表示任何用户,select表示赋予的权限为查询。
执行后,顺利创建。