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');
我想编写一个存储过程来获取模式中的所有 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');