欢迎投稿

今日深度:

存储过程中遇到ora-00942表或视图不存在,存储过

存储过程中遇到ora-00942表或视图不存在,存储过程ora-00942


解决方法:


grant select, insert, update, delete on bookmarks.* to bm_user@localhost identified by 'password'


授权语句:意思是把表 XXX select, insert, update, delete权限授给bm_user表


以sys身份登录,为system赋予select 和delete sys.fga_log$的权限,否则下边的存储过程添加会有问题。
Sql> grant select ,delete on sys.fga_log$ to system;

原因:
后来查资料得知如果用户有dba角色,角色里包含的权限在存储过程里不会被继承;所以又单独对tb_bil_acct_566 ,seq_bil_acct_his_hisid_566.nextval等作了显式赋权,问题得以解决。

http://blog.csdn.net/zhangtian0913/archive/2009/03/09/3973484.aspx



 grant 授权的授权结果从哪里看到? 

grant select ,delete on sys.fga_log$ to system;--改的是哪个基表? --dba_tab_privs



select * from dba_tab_privs where grantee='SYSTEM' AND TABLE_NAME='FGA_LOG$'[@more@]grant select ,delete on sys.fga_log$ to system;--改的是哪个基表? --dba_tab_privs



select * from dba_tab_privs where grantee='SYSTEM' AND TABLE_NAME='FGA_LOG$


ora-00942 表或视图不存在

首先确保那些报表或视图不存在的表or视图究竟存不存在,如果不存在,那就是导的有问题了,重新导入即可。
如果确实有表,那就先试一下在PLSQL中重新编译一下存储过程,看下可不可以?
一般来说,如果是表和存储过程是属于一个USER的话,这样就可以解决了,
先试下吧,如果不行的话,那就有可能是分别属于不同的用户了
你可以查一下SELECT * FROM DBA_ORJECTS where object_name = '表名或存储过程名' 来查询一下,是否属于同一个USER,希望能对你有所帮助 。
 

oracle存储过程 编译错误:PL/SQL: ORA-00942: 表或视图不存在 行:42 文本:elsif G

我没有仔细看,看到这我就晕了:

FROM CC_STAND_BOM
WHERE ITEM =ITEM
AND CODE=CODE
AND bom_ver=bom_ver
and company=COMPANY
GROUP BY ITEM,ITEM_D,ITEM_CLASS,ITEM_D_CLASS;

请问:
ITEM =ITEM
CODE=CODE
company=COMPANY

这些哪个是变量,哪个是字段名啊?

变量名和字段名不要一致,变量名可以加p_xxx,与字段名区别开来

比如:
ITEM =p_ITEM
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3183.html NewsArticle 存储过程中遇到ora-00942表或视图不存在,存储过程ora-00942 解决方法: grant select, insert, update, delete on bookmarks.* to bm_user@localhost identified by 'password' 授权语句:意思是把表 XXX select, insert, u...
评论暂时关闭