通过角色授权的对象在存储过程中无法使用

当尝试在Oracle存储过程中使用通过角色授权的表或视图时,出现ORA-00942错误。即使这些对象在查询时能够正常工作,但在存储过程内部却无法编译。同样的问题也发生在试图访问数据字典时。解决这个问题的关键在于理解Oracle的权限模型,需要通过显式授权,由表的所有者或DBA执行GRANT操作,而非依赖角色授权。

在编译一个存储过程时,发生了ORA-00942: table or view does not exist错误,但是这个表是可以查询到数据的。

--system用户下建了rolecommon角色,并授权给common用户
SQL> show user
User is "system"

SQL> create role rolecommon;
Role created

SQL> grant rolecommon to common;
Grant succeeded
--将表tmp_clob的查询权限授权给rolecommon角色
SQL> grant select on tmp_clob to rolecommon;
Grant succeeded
--在common用户下,可以访问到tmp_clob表
SQL> conn common/common;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.4.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值