oracle 统计指定条件下所有表的行数

今天 需要统计下指定用户下的所有表的行数,于是采用了oracle 内置视图:

select table_name,num_rows  from dba_tables where owner = ‘USERNAME‘;  或
select table_name,num_rows from user_all_tables ;

可是统计结果发现,有的表的统计数量和实际数量有差异,因此,直接自己写了个统计指定条件下表的记录的sql:

--创建一个表用于存储计算结果
create table t_temp(t_name varchar2(50),t_number number);
--计算所有表的行数,并保存
declare
table_numbers number;
i number;
table_name1 varchar2(50);
cursor cursor_value is select table_name from user_all_tables where instr(table_name,‘$‘,1)=0 and instr(table_name,‘SMID_‘,1)=0;
begin
   open cursor_value; 
      loop 
        fetch cursor_value into table_name1;  
           execute immediate ‘select count(*) from ‘||table_name1 into table_numbers;
           DBMS_OUTPUT.PUT_LINE(table_name1||‘     ‘||table_numbers); 
           insert into t_temp values(table_name1,table_numbers);
           commit;
           exit when cursor_value%notfound;     
      end loop;
    close cursor_value;
   end; 
   
--查询统计表,结果是理想的结果
select *from t_temp;
时间: 2024-10-12 16:03:23

oracle 统计指定条件下所有表的行数的相关文章

取得指定Schema下的表

MYSQL中取得指定Schema下所有表定义的SQL语句如下(假设Schema名为demoschema): SHOWTABLES FROM demoschema MSSQLServer中的系统表sysobjects中记录了当前系统中定义的对象,其中xtype字段等于U的记录为表定义,因此取得当前数据库中所有表定义的SQL语句如下(假设Schema名为demoschema): SELECT name FROM demoschema.sysobjects where xtype="U" O

实战:mysql统计指定架构的所有表的数据和索引大小情况

#统计指定架构的所有表的数据和索引大小情况 #tablesize.sh #!/bin/sh #[email protected] if [ "$#" -gt 2 ];then echo "**********************************" echo "too many input parameters" echo "**********************************" echo "

Oracle统计用户所有表的行数

DECLARE   CURSOR c1 is select table_name from user_tables;   V_TABLE_NAME user_tables.TABLE_NAME%TYPE;   V_CNT number;   V_SQL varchar2(2000); BEGIN   FOR V_TABLE_NAME in c1 loop      V_SQL := 'select count(1) from ' || V_TABLE_NAME.table_name;      

ORACLE 统计查看每一个表的行数

create or replace procedure sp_static_tab /**   * 统计所有表的行数   */is vv_table_name varchar2(64);   vi_table_rows number;  vv_sqlstr     varchar2(200);  cursor r_cursor is select table_name from user_tables  where substr(table_name,1,3)<>'BIN';  begin E

c语言:实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定

实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表. 程序: #include<stdio.h> void mul(int n)//multiplication 乘法 { int i, j; for (i = 1; i <= n; i++) { for (j = 1; j <= i; j++) { printf("%d*%d=%-2d  ", i, j, i*j); //其中%2d中的2表示

【SQL】统计所有表的行数

原文:[SQL]统计所有表的行数 环境:mssql ent 2k8 r2 原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表 IF OBJECT_ID('tempdb..#TableRowCount','U') IS NOT NULL DROP TABLE #TableRowCount GO CREATE TABLE #TableRowCount (Name sysname PRIMARY KEY, RowCnt DECIMAL(11,0), R

7.04 求一个表的行数

问题:计算一个表的行数,或计算某个列中值的个数.例如,找到职员总数以及每个部门的职员数.解决方案:如果以整个表作为一个组或一个窗口计算行数,则只需使用COUNT函数及"*"字符:select count(*) from emp; 如果要创建多个数据组或窗口,则使用COUNT函数的同时,还要使用GROUP BY子句:select deptno,count(*) from emp group by deptno;

sqlserver查询所有表的行数的sql语句

原文:sqlserver查询所有表的行数的sql语句 select a.name, b.rows  from sysobjects a inner join sysindexes b on a.id = b.id where a.type = 'u'   and b.indid in (0, 1)order by a.name

查看SqlAzure和SQLServer中的每个表数据行数

SqlAzure中的方式: select t.name ,s.row_count from sys.tables t join sys.dm_db_partition_stats s ON t.object_id = s.object_id and t.type_desc = 'USER_TABLE' and t.name not like '%dss%' and s.index_id = 1 order by row_count desc SQLServer的方式: select a.name