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

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

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

表2

输出:

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

  1. create or replace PROCEDURE get_id_counts
  2. IS
  3. BEGIN
  4. FOR table_n in (SELECT * FROM dba_tables) LOOP
  5. EXECUTE IMMEDIATE 'SELECT ID, COUNT(*) FROM MySchema.' || table_n.table_name || ' GROUP BY ID';
  6. END LOOP;
  7. END;
  8. /
  9. execute get_id_counts;

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

uurv41yg

uurv41yg1#

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

  1. SELECT * FROM dba_tables

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

相关问题