今天看oracle的文档,上面对ALL_ALL_TABLES的解释是Description of all object and relational tables accessible to the user。
但是我 selecet table_name from ALL_ALL_TABLES;得到的结果集中有一些表名是不能对它进行检索的。
例如:结果集:TABLE_NAME
----------
   A
   B
   C但再select * from  A 时,就会报:ora-00942:表或视图不存在?这是为什么啊?是我操作不对?还是A是个object不是表名,还是?

解决方案 »

  1.   

    selecet owner,table_name from ALL_ALL_TABLES;在对某个表查询的时候在表名前面加上对应的拥有者名称
      

  2.   

    SQL> select owner,table_name from all_tables where table_name = 'SDO_GR_RDT_1';OWNER                          TABLE_NAME
    ------------------------------ ------------------------------
    MDSYS                          SDO_GR_RDT_1
    SQL> select count(1) from MDSYS.SDO_GR_RDT_1;  COUNT(1)
    ----------
             0
    SQL> select count(1) from SDO_GR_RDT_1;
    select count(1) from SDO_GR_RDT_1
                         *
    ERROR at line 1:
    ORA-00942: table or view does not exist
      

  3.   

    至于为什么
    是因为在当前用户下没有A这张表
    你需要在表名前加上表所属的用户名
    告诉ORACLE去哪里找到这张表可以参考一下http://blog.csdn.net/wh62592855/archive/2009/09/27/4599333.aspx
      

  4.   

    每一张表都是属于一个SCHEMA(可理解为用户),
    如果一个用户下要访问另一个SCHEMA(用户)的表,要使用
    SCHEMA名.表名 的形式访问(当然,还必须要用相应的权限)。如:当前用户test具有dba权限,其访问sys的表file$
    select * from sys.file$;
      

  5.   

    还有all_all_tables啊  第一次碰到  不过到现在为止还没有用到