RT  打个比方,  有N个表名都是以M_开头,如果我想查询这N个表的数据的COUNT 总量,ORACLE 数据库是否存在这样的语句

解决方案 »

  1.   

    select sum(num_rows) from user_tables where table_name like 'M_%'
      

  2.   


    select count(*) from all_tables where table_name like 'M_%'
      

  3.   

    --写个过程
    --给个例子参考
    declare
    cnt number;
    sqlstr varchar2(4000);
    v_tablename varchar2(30);
    cursor c_tablename is select table_name from all_tables where owner='SCOTT';
    --你修改下上面的select语句 where owner=' ' and table_name like 'M_%'
    begin
    open c_tablename;
    loop
    fetch c_tablename into v_tablename;
    exit when c_tablename%notfound;
    sqlstr:='select count(*) from '||v_tablename;
    execute immediate sqlstr into cnt;
    dbms_output.put_line('table_name: '||v_tablename||';  count: '||cnt);
    end loop;
    close c_tablename;
    end;table_name: DEPT;  count: 8
    table_name: EMP;  count: 14
    table_name: BONUS;  count: 0
    table_name: A;  count: 5
    table_name: STUDENT;  count: 2
    table_name: STUDENT_DML;  count: 1
    table_name: T_BLOB;  count: 1PL/SQL 过程已成功完成。
      

  4.   


    ---看错了
    select SUM(NUM_ROWS) from all_tables where table_name like 'E_%'
      

  5.   


    --我有点多此一举了 ,当3楼没有啊
    select TABLE_NAME, SUM(NUM_ROWS) from all_tables where owner='SCOTT'
    GROUP BY TABLE_NAME
    TABLE_NAME                     SUM(NUM_ROWS)
    ------------------------------ -------------
    DEPT                                       8
    STUDENT                                    2
    EMP                                       14
    BONUS                                      0
    A                                          5
    STUDENT_DML                                1
    T_BLOB已选择7行。
      

  6.   


    select sum(num_rows) from user_tables where table_name like 'A0%'
    --------------------------------------------------------------------
    sum(num_rows)
    --------------
    413