我需要从多个表(1000+表)中获取计数并将其相加为单个值。
例如:以TA开头的表格。只需要考虑这些表格。
我想要实际的计数,因此不想使用DBA_TABLES / ALL_TABLES。
请建议我这样做的最佳方法。我只需要这些表中所有记录的Sum的单个值。
由于
答案 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