用到两个用户,比如用户A,用户B。
在A用户写个存储过程,里面一个语句是更新B用户下的表B.tablename登录A用户,然后存储过程里写
update B.tablename set pass = 'new password' where userid =userid;错误:PL/SQL: ORA-00942: 表或视图不存在在用户A下,SQL窗口直接更新B用户的表,没有问题,修改权限应该是有了。要怎么解决呢?

解决方案 »

  1.   


    我已经在 表的名称前键入该表所有者的名称了 update B.tablename set pass = 'new password' where userid =userid;直接操作是可以更新的,存储过程为什么就找不到视图呢?
      

  2.   

    用A用户登陆创建以下.
    create public synonym tablename for B.tablename;
      

  3.   

    你的权限没有问题吧?
    如果A用户在存储过程中调用B用户的对象,则必须B显示的把该对象的相应权限赋予给用户A。
    在SQL窗口可以查是因为DBA用户把B用户对象的同义词的权限赋给了A 用户。
      

  4.   

    grant insert,update,delete on B.tablename  to A;
      

  5.   

    create or replace synonym XXX for B.tablename  ;
     要有更新权限!