Oracle存储过程调用另一个用户下的表,提示表或试图不存在

[复制链接]
查看11 | 回复0 | 2021-12-3 11:07:00 | 显示全部楼层 |阅读模式
今天在从另外一个服务器上把数据库的表导出,导入到另一个服务器上,重新启动工程的时候,发现一个很诡异的问题
总是提示ORA-00942: table or view does not exist(ERROR -942 ORA-00942: 表或视图不存在)这个错误,但是我将这个SQL语句复制出来,单独在命令行运行,而又没有任何错误。很纠结,很纳闷,很无解,好好的一个SELECT语句,在命令行里就可以执行,放到存储过程就会出错了,怎么就不对了?后来经过各种百度、Google分析总结如下:角色在函数、存储过程、触发器中都是失效的,也就是说,用户从角色继承过来的权限,不能在函数、存储过程、触发器中使用。在函数、存储过程、触发器中,如果要访问其他用户的对象,需要显式地给用户授予访问的权限。所以要调用另外一个用户下的表的时候就需要单独在这个用户下对这个表进行赋权,例如a用户下的存储过程product_a要调用b用户下的table_b这个表,就需要单独给b用户下的这个表进行赋权,登录b用户,grant insert on t_photo to a;复制这个sql到
执行后,不再提示报错。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行