Oracle Query从多个表中汇总计数

时间:2017-04-23 14:10:49

标签: oracle

我需要从多个表(1000+表)中获取计数并将其相加为单个值。

例如:以TA开头的表格。只需要考虑这些表格。

我想要实际的计数,因此不想使用DBA_TABLES / ALL_TABLES。

请建议我这样做的最佳方法。我只需要这些表中所有记录的Sum的单个值。

由于

1 个答案:

答案 0 :(得分:0)

一个例子:

CREATE TABLE TA_1 AS select * FROM all_objects;
CREATE TABLE TA_2 AS select * FROM TA_1;
CREATE TABLE TA_abcd AS select * FROM TA_1;

select count(*) FROM TA_1;

  COUNT(*)
----------
     73701
DECLARE
  partial_cnt NUMBER;
  final_cnt NUMBER := 0;
BEGIN
   FOR tab_name IN ( SELECT table_name FROM user_tables WHERE table_name LIKE 'TA%' )
   LOOP
      EXECUTE IMMEDIATE 'SELECT count(*) FROM '|| tab_name.table_name INTO partial_cnt;
      final_cnt := final_cnt + partial_cnt;
   END LOOP;
   DBMS_OUTPUT.PUT_LINE( 'Total count = ' || final_cnt );
END;
/

Total count = 221103