跨用户创建view ORA-00942: 表或视图不存在错误

今天在我的ORACLE 9.2.0.1 /WINXP平台创建跨用户的VIEW发现一个奇怪问题。
我执行了grant dba to userc,然后运行
create or replace   view  userc.view
  2   As
  3   select a.pkg_id,a.scheme_id,c.item_code,c.adjustrate_id,
  4     to_char(c.valid_date,'YYYYMMDD') valid_date,
  5     to_char( c.expire_date,'YYYYMMDD') expire_date
  6     from usera.table_a c,userb.table_b a
  7     where c.scheme_id = a.scheme_id and a.event_id=1
  8     group  by  a.pkg_id,to_char(c.valid_date,'YYYYMMDD'),
  9     a.scheme_id,c.item_code,c.adjustrate_id,to_char( c.expire_date,'YYYYMMDD')
 10  ;

create or replace   view  userc.view
 As
 select a.pkg_id,a.scheme_id,c.item_code,c.adjustrate_id,
   to_char(c.valid_date,'YYYYMMDD') valid_date,
   to_char( c.expire_date,'YYYYMMDD') expire_date
   from usera.table_a c,userb.table_b a
   where c.scheme_id = a.scheme_id and a.event_id=1
   group  by  a.pkg_id,to_char(c.valid_date,'YYYYMMDD'),
   a.scheme_id,c.item_code,c.adjustrate_id,to_char( c.expire_date,'YYYYMMDD')


ORA-00942: 表或视图不存在
实际上表都是存在的并且SELECT部分使用USERC也是可以运行正常的,奇怪。后来试试显式赋权运行

SQL> grant all on usera.table_a to userc;

Grant succeeded

SQL> grant all on userb.table_b to userc;

Grant succeeded

SQL>
SQL> create or replace   view  userc.view
  2   As
  3   select a.pkg_id,a.scheme_id,c.item_code,c.adjustrate_id,
  4     to_char(c.valid_date,'YYYYMMDD') valid_date,
  5     to_char( c.expire_date,'YYYYMMDD') expire_date
  6     from usera.table_a c,userb.table_b a
  7     where c.scheme_id = a.scheme_id and a.event_id=1
  8     group  by  a.pkg_id,to_char(c.valid_date,'YYYYMMDD'),
  9     a.scheme_id,c.item_code,c.adjustrate_id,to_char( c.expire_date,'YYYYMMDD')
 10  ;

View created

OK了,不知道是不是ORACLE的BUG还是本来就要求如此,查ORACLE手册
The owner of the view (whether it is you or another user) must have been
explicitly granted privileges to access all objects referenced in the view
definition. The owner cannot have obtained these privileges through roles

原本要求就是必须显式赋权,可惜ORACLE错误实在不够清楚

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值