返回模式中某些表中所有唯一ID的计数的sql过程

t40tm48m  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(221)

我想编写一个存储过程来获取模式中所有具有“id”列的表,一旦有了这些表,我就想输出每个表中唯一id的计数。
前任。
表1

表2

输出:

我已经实现了后一部分,但是第一部分我遇到了困难。以下是我目前的剧本:

create or replace PROCEDURE get_id_counts
IS
    BEGIN
        FOR table_n in (SELECT * FROM dba_tables) LOOP
            EXECUTE IMMEDIATE 'SELECT ID, COUNT(*) FROM MySchema.' || table_n.table_name || ' GROUP BY ID';
        END LOOP;
    END;
/
execute get_id_counts;

当前我收到错误:“%s:无效标识符”,我假设这是由于不是架构中的所有表都有列“id”造成的

uurv41yg

uurv41yg1#

假设您的数据库是oracle
使用 dba_tab_columns 仅获取具有id列的
因此,将您的查询从

SELECT * FROM dba_tables

SELECT * FROM dba_tables where table_name  in (select table_name from dba_tab_columns where column_name = 'ID');

相关问题