不同的用户有不同的权限,高权限可以看到低权限用户的所有表,而如果你是低权限用户,那么你就无法访问其他用户。
因此你这个问题:
如果你权限高,可以访问用户1.TB1,2.TB1,你从T_CONNECT中得到用户名后加上‘.DB',DB为具体的表,你就可以访问了呀。
如果你权限低,那就不用讨论这个问题了。

解决方案 »

  1.   

    可以用动态sql来做,比如
    declare
       c,d integer;
       username varchar2(30);
       col varchar2(100);
    begin
       select i_user into username from t_connect where rownum=1;
       c:= dbms_sql.open_cursor;
       dbms_sql.parse(c, 'select name from '||username||'.testtbl', dbms_sql.native);
       dbms_sql.define_column (c, 1, col,16);
       fdbk:= dbms_sql.execute (c);
       loop
          exit when dbms_sql.fetch_rows (c) = 0;
          dbms_sql.column_value (c, 1, col);
          dbms_output.put_line(col);
       end loop;
       dbms_sql.close_cursor (c);
    end;