我在表空间A下创建了一个存储过程去访问表空间B下的table1时报出“表和视图不存在”:
     create or replace procedure Get_dmmc(s in varchar2) is
       v_dmmc varchar2(50);
       v_s_sql varchar2(200);
       begin
            v_s_sql:='select field1 from 表空间B.table1 where field1 =:field1';
            execute immediate v_s_sql into v_dmmc using s;
            dbms_output.put_line(v_dmmc);
       end;请问如何解决这样的的问题?
谢谢!

解决方案 »

  1.   

    grant select B.table1 to yourUser;  -- B是表table1所有者的用户名,不是表空间
      

  2.   

    使用sys,执行:grant select on B.table1 to yourUser;  
      

  3.   

    楼主弄错了,SCHEMA.OBJECT点号前面的那个是这个对象的拥有者,你错把表空间当成对象的拥有者,那数据库如果没有《表空间B》肯定找不到这个对象。即使你授权也没用。概念混淆了。
      

  4.   

    'select field1 from 表空间B.table1 where field1 =:field1'
    将表空间B换成 用户user,也叫作SCHEMA;
    另外当前用户也要有 访问该用户下的table1表的权限。
      

  5.   

    可用sys用户去给当前用户分配select另一个用户的权限,而不能用自身用户给自己分配权限
      

  6.   


    B用户将select权限授给A用户。