SQL Return 计算架构中某些表中所有唯一 ID 的过程

SQL Procedure to Return Counts of All Unique IDs in Some Tables within a Schema

我想编写一个存储过程来获取模式中的所有 tables,该模式有一个名为 "ID" 的列,一旦我有了这些 tables 我想输出每个 table.

中唯一 ID 的计数

例如

table1

table2

输出:

我已经实现了后一部分,但我在第一部分遇到了困难。到目前为止,这是我的脚本:

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:无效标识符”,我认为这是由于并非架构中的所有 table 都具有列 "ID"

假设你的数据库是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');