先用sql生成一个脚本,执行之。因为没有直接的方法。
select 'prompt '||a.table_name||';'||chr(13)||'select count(*) from '||a.table_name||';'
from user_tables a

解决方案 »

  1.   

    我是初学者,能写的详细写么
    比如说一个叫mp的shcema下的t1,t2,t3三张表
    谢了
      

  2.   

    给你写个通用的吧:accept v_tname prompt 请输入表名(逗号隔开):
    set serveroutput on size 1000000
    set autotrace off
    set timing off
    SPOOL C:\COUNT.SQL
    DECLARE
      v_t     VARCHAR2(30);
      v_all_t VARCHAR2(1000) ;
      n       INT;
    BEGIN
      dbms_output.put_line('/*');
      v_all_t := UPPER('&v_tname');
      dbms_output.put_line('*/');
      
      IF Substr(v_all_t,-1) <> ',' THEN
        v_all_t := v_all_t || ',' ;
      END IF;  n := Instr(v_all_t,',',1,1);
      WHILE n>0 LOOP             
          v_t := Trim(Substr(v_all_t,1,n-1));
          v_all_t := Substr(v_all_t,n+1);
          Dbms_Output.Put_Line('SELECT COUNT(*) '||v_t||' FROM '||v_t||';');
          n := Instr(v_all_t,',',1,1); 
      END LOOP;
    END;
    /
    SPOOL OFF
    @C:\COUNT.SQL
    $DEL C:\COUNT.SQL