一个数据库实例下的2个用户A和B,A用户有dba的权限,B有connect和resource的权限,B下有张表YW_USER,在A下对B做同义词YW_USER,为啥在A的存储过程中对同义词YW_USER报 ORA-00942: 表或视图不存在;
还需要将B中的表YW_USER授select ,update,delete 的权限给A吗?
可我再plsql developer里面都能在命令窗口里直接对同义词YW_USER操作

解决方案 »

  1.   

    -- 既然提示 ORA-00942: 表或视图不存在;那就在你引用的表前面加上用户名试试:
    user_name.table_name
      

  2.   

    在pl/sql developer中可以操作,是因为具A具有DBA角色,
    oracle存储过程默认定义者权限,但角色对存储过程中无效,
    需要显式授予权限。
    grant all on YW_USER to A;
      

  3.   

    就是不想用 用户名.表 才用的同义词,发现在B用户下将YW_USER表的增删改查的权限给A后,在A的存储过程中同义词YW_USER可用了,这是为啥哪,A有DBA的权限啊,怎么还要单给它授权?