日期:2014-05-17  浏览次数:20819 次

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

------解决方案--------------------
SQL code


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;

------解决方案--------------------
SQL code

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;