如何用oracle存储过程查出每一张表各自的记录数?
1要用存储过程2查出这个用户的所有数据库表的所有记录数得到的结果如下数据库表名记录总数xxx100yyy200类似这样怎么写给了不少分呢...
1 要用存储过程
2 查出这个用户的所有数据库表的所有记录数 得到的结果如下
数据库表名 记录总数
xxx 100
yyy 200
类似这样 怎么写 给了不少分呢 展开
2 查出这个用户的所有数据库表的所有记录数 得到的结果如下
数据库表名 记录总数
xxx 100
yyy 200
类似这样 怎么写 给了不少分呢 展开
1个回答
展开全部
有两个办法:
1、select a.table_name, sum(a.num_rows) from user_tables a group by a.table_name;这种方式需要oracle对表做了统计分析后才能计算出总数,而且统计分析后新增或删除的记录,统计不出来
2、写个过程,但是这种方式的执行效率恐怕高不了,我可以给你写个方法
declare p_rows number;p_sql varchar(4000);
begin
for r in (select a.TABLE_NAME from user_tables a) loop
p_sql:='select count(1) from '||r.table_name;
execute immediate p_sql into p_rows;
dbms_output.put_line(r.table_name||','||p_rows);
end loop;
end;
1、select a.table_name, sum(a.num_rows) from user_tables a group by a.table_name;这种方式需要oracle对表做了统计分析后才能计算出总数,而且统计分析后新增或删除的记录,统计不出来
2、写个过程,但是这种方式的执行效率恐怕高不了,我可以给你写个方法
declare p_rows number;p_sql varchar(4000);
begin
for r in (select a.TABLE_NAME from user_tables a) loop
p_sql:='select count(1) from '||r.table_name;
execute immediate p_sql into p_rows;
dbms_output.put_line(r.table_name||','||p_rows);
end loop;
end;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询