zoukankan      html  css  js  c++  java
  • ORACLE 查找数据库中有记录的表



    通过执行select NUM_ROWS,table_name from user_tables where NUM_ROWS>0,是可以达到效果的。

    但是:有时候数据是不准的,原因是执行该查询的时候要先对表进行分析。

    分析表的语法为:analyze table table_name compute statistics;

    如何批量对表进行分析呢?

    1、存储过程+游标,循环,OK没有问题,但是有点麻烦。

     

    create or replace procedure Pro_AnalyzeTables is
    cursor cur_tab is
    select table_name from user_tables;
    record_cur_tab cur_tab%rowtype;
    begin
    delete from DataTables;
    open cur_tab;
    loop
    fetch cur_tab into record_cur_tab;
    exit when cur_tab%notfound;
    execute immediate 'analyze table '||record_cur_tab.table_name||' compute statistics';
    end loop;
    insert into DataTables (select Table_name,NUM_Rows from user_tables where NUM_ROWS>0);
    end Pro_AnalyzeTables;

    2、Oracle中可以将结果输出到文件,那么可以利用这个搞他一下

          方法如下:
         
    spool DataTables.sql;(这里你可以写路径,例如,I:\DataTable.sql,将会将数据写入到这个文件)
          select 'analyze table '||table_name||' compute statistics;' from user_tables;
          spool off;
          @DataTables.sql;
    //执行该文件

          OK,这样对数据库该用户名下的所有表就分析完毕了,那么下一步就可以执行select NUM_ROWS,table_name from user_tables where NUM_ROWS>0



  • 相关阅读:
    《程序员修炼之道——从小工到专家》读后感二
    2019.10.14课堂总结
    《程序员修炼之道——从小工到专家》读后感一
    2019.09.23课堂总结
    回文序列判断
    动手动脑
    2018/10/21动手动脑及类的创建
    动手动脑-java重载
    第二次上机实验体会
    Java第一次上机实验源代码
  • 原文地址:https://www.cnblogs.com/qidian10/p/1943455.html
Copyright © 2011-2022 走看看