首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 认证考试 > ORACLE/CIW认证 >

ORACLE当前用户下所有表中的记录数

2008-12-16 
SQL

    SQL> show user

  USER is "AAA"

  SQL> set serverout on

  写一个脚本,查询当前用户下所有的表并统计记录数。

  declare

  v_table varchar2(60);

  v_num number;

  v_sum number;

  begin

  v_sum:=0;

  for idx in (select * from user_tables order by table_name) loop

  v_table:=idx.table_name;

  execute immediate ’select count(*) from ’ || v_table into v_num ;

  v_sum:=v_sum+v_num;

  end loop ;

  dbms_output.put_line(v_sum);

  end;

  /

  48108

  结果是48108。

  oracle有一个视图记录了当前用户下的表的所有信息,包括记录数(num_rows),使用该表也可以得到记录总数:

  SQL> show user

  USER is "AAA"

  SQL> select sum(num_rows) from user_all_tables;

  SUM(NUM_ROWS)

  46428

  结果却不一样,因为没有收集统计信息,先收集一下统计信息:

  declare

  v_table varchar2(60);

  begin

  for idx in (select table_name from user_tables order by table_name) loop

  v_table:=idx.table_name;

  execute immediate ’analyze table ’ || v_table ||’ compute statistics’ ;

  end loop ;

  end ;

  /

  现在再执行查徇:

  SQL> select sum(num_rows) from user_all_tables;

  SUM(NUM_ROWS)

  48108

  结果正确。

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行