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



  • 相关阅读:
    BAM部署失败 未能加载”AdomdClient”或它的某一个依赖项。系统找不到指定的文件
    BizTalk Server 事务机制
    TSQL 访问远程数据库并对其数据表进行操作
    BAM门户聚合 – Pivot Table不显示数据
    Find max or min
    SetProperties
    Define
    Form derives from Form
    MWArrayComponent
    JAVA JDK
  • 原文地址:https://www.cnblogs.com/qidian10/p/1943455.html
Copyright © 2011-2022 走看看