有一类表A(A1,A2,A3....An)和一张表B
A表表名的组成部分为t_B.code,比方说B.code为0000,0001。那么就对应A表t_0000,t_0001。里面存放我的一批数据,现在我要统计这N张A表中的所有数据量,要怎么操作?

解决方案 »

  1.   

    set serveroutput on --打开sqlplus输出,如果是用plsqldev 这个忽略DECLARE
      V_CNT INT;
    BEGIN
      FOR REC IN (SELECT CODE FROM B) LOOP
        EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE
          INTO V_CNT;
        DBMS_OUTPUT.PUT_LINE('表[t_' || REC.CODE || ']数据条数:' || V_CNT);
      END LOOP;
    END;
      

  2.   

    输出文件可以用utl_file包http://blog.csdn.net/fw0124/article/details/7785623
    如果在sqlplus中,可以spool输出。数量求和可以在存储过程中做嘛。
      

  3.   


    DECLARE
      V_CNT INT;
      V_SUM INT;--总条数。
    BEGIN
      V_SUM :=0;      
      FOR REC IN (SELECT CODE FROM B) LOOP
        EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE
          INTO V_CNT;
        V_SUM := V_SUM + V_CNT;     
      END LOOP;
    END;
      

  4.   

    DECLARE
      V_CNT INT;
      V_SUM INT;--总条数。
    BEGIN
      V_SUM :=0;
      FOR REC IN (SELECT CODE FROM B) LOOP
        EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE
          INTO V_CNT;
        V_SUM := V_SUM + V_CNT;
      END LOOP;
      dbms_output.put_line(to_char(V_SUM));
    END;
     
    请问这么写有什么问题吗?
    为什么我执行后是这样的?回车后数字一直递增。
     
    SQL> @test2.sql
     14  
     15