失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Oracle查询数据库中所有表的记录数

Oracle查询数据库中所有表的记录数

时间:2018-11-08 16:09:25

相关推荐

Oracle查询数据库中所有表的记录数

方法一:

首先建立一个计算函数

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

create or replace function count_rows(table_name in varchar2,

owner in varchar2 default null)

return number

authid current_user

IS

num_rows number;

stmt varchar2(2000);

begin

if owner is null then

stmt := 'select count(*) from "'||table_name||'"';

else

stmt := 'select count(*) from "'||owner||'"."'||table_name||'"';

end if;

execute immediate stmt into num_rows;

return num_rows;

end;

然后通过计算函数进行统计

select table_name, count_rows(table_name) nrows from user_tables

获取要统计的值

方法二:

select t.table_name,t.num_rows from user_tables t

查看记录数,但是num_rows存储的是上次分析后的值,不准确,要使用该方法,必须分析后才可以试用

完成的语句为

declare

v_tName varchar(50);

v_sqlanalyze varchar(500);

v_num number;

v_sql varchar(500);

cursor c1

is

select table_name from user_tables;

begin

open c1;

loop

fetch c1 into v_tName;

if c1%found then

v_sqlanalyze :='analyze table '||v_tName||' estimate statistics';

execute immediate v_sqlanalyze;

v_sql := 'select NUM_ROWS from user_tables where table_name =upper('''||v_tName||''')';

execute immediate v_sql into v_num;

dbms_output.put_line('表名: '||v_tName||' 行数: '||v_num);

else

exit;

end if;

end loop;

end;

如果觉得《Oracle查询数据库中所有表的记录数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。