ORACLE版本是10,现在数据中有900多张数据表,
有一些表中有数据,有一些没有数据,
现在呢我需要查询出所有有数据的那些表。
别说用select 一张张表来看,那会死人的。

解决方案 »

  1.   

    可以写个函数去查找
    先从all_table里找出所有表名
    然后做循环用动态sql去查询所有表的纪录数
      

  2.   

    我用toad可以直接看到所有表有多少纪录,不知道TOAD是怎么查的,我去研究下
      

  3.   

    google来的
    ===============
    执行下面的角本,生成c:\mytext.sql的文件,运行c:\mytext.sql文件中的内容,可以得到当前用户下的所有表及表中的记录数
    Connect UserID/PSW@NETServerName
    set feedback off
    set heading off
    spool c:\mytext.sql
    select decode(rownum,1,'','union')||' select'||''''||table_name||''''||',count(*)from '||table_name from user_tables;
    spool off
      

  4.   

    SELECT * FROM USER_TABLES WHERE NUM_ROWS > 0;
      

  5.   


    呵呵,没仔细看user_tables里的内容,原来里面有num_rows,太简单了
    换成all_tables就可以看全部表了
      

  6.   


    这个NUM_ROWS好像有些表是不记录数据的吧.
      

  7.   


    SELECT * FROM USER_TABLES WHERE NUM_ROWS > 0; 如果不先对表进行分析,得不到预期的结果的。
    这个字段只有对表执行了分析以后才会出现   
    analyze table table_name compute statistics;
    推荐使用:dbms_stats.gather_*_stats
    dbms_stats这个包是ORACLE自带的