当前位置:首页>开发>正文

如何在oracle中查询每个表的记录条数 oracle如何批量查询数据表记录数

2023-04-14 06:03:27 互联网 未知 开发

 如何在oracle中查询每个表的记录条数 oracle如何批量查询数据表记录数

如何在oracle中查询每个表的记录条数

如何在oracle中查询每个表的记录条数
可用两种方法,一种是在oracle的系统表中统计,另一种需要写存储过程统计,方法分别如下。
1、系统表中统计:
SELECT sum(num_rows) FROM user_tables

结果:

2、存储过程统计,代码如下:

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如何批量查询数据表记录数

首先,oracle中有存放表名的系统表,所以你那个tcmz有点多余
declare 
v_tablename varchar2(60)
v_count int
v_sql varchar2(2000)
cursor cur_tablename is 
select table_name from user_tables
begin
open cur_tablename
loop
fetch cur_tablename into v_tablename 
exit when cur_tablename%notfound
v_sql:=select count(*) from ||v_tablename||
execute immediate v_sql into v_count
dbms_output.put_line(v_tablename||:||v_count)
end loop
close cur_tablename
end
如果非要用你那个的话,可以这样改
declare 
v_tablename varchar2(60)
v_count int
v_sql varchar2(2000)
cursor cur_tablename is 
select 表名 from tcmz--字段名你替换成你自己的
begin
open cur_tablename
loop
fetch cur_tablename into v_tablename 
exit when cur_tablename%notfound
v_sql:=select count(*) from ||v_tablename||
execute immediate v_sql into v_count
dbms_output.put_line(v_tablename||:||v_count)
end loop
close cur_tablename
end

oracle中,如何查询各张表的记录数量,分别显示出来。

执行select select || t.table_name || , count(*) from || t.table_name || from user_tables t 语句,得到具体的语句,然后执行这些语句。
如果要求精度不高,且统计信息收集准确的话,也可以 执行如下语句:

select t.table_name , t.num_rows from user_tables t 。

如何用oracle存储过程查出每一张表各自的记录数?

有两个办法:
1、select a.table_name, sum(a.num_rows) from user_tables a group by a.table_name这种方式需要oracle对表做了统计分析后才能计算出总数,而且统计分析后新增或删除的记录,统计不出来
2、写个过程,但是这种方式的执行效率恐怕高不了,我可以给你写个方法
declare p_rows numberp_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

oracle 查数据库每张表里有多少条记录

先做一次表分析之后
select * from user_tables
如果要比较准确的话可以使用存储过程来实现:
DECLARE
CURSOR curs IS SELECT table_name FROM user_tables
cn INT
BEGIN
FOR cur IN curs LOOP
EXECUTE IMMEDIATE select count(1) from || cur.table_name INTO cn
dbms_output.put_line(cur.table_name || : || cn)
END LOOP
END

最新文章

随便看看