【问题标题】:SQL Oracle: how to get count of columns per view per schema from a metadata table [duplicate]SQL Oracle:如何从元数据表中获取每个模式的每个视图的列数[重复]
【发布时间】:2020-06-28 17:29:00
【问题描述】:

我有一个包含以下信息的元数据表:

我想构建一个查询,显示每个模式的每个视图的计数 (*),类似于

我不太确定如何开始?在 matedata 表中,仅存储每个模式的视图名称。

有没有人给点建议,谢谢

【问题讨论】:

  • 您是否随意显示所有模式中的all 视图的计数?或者,是否有一些您想要报告的固定和已知视图?

标签: sql oracle


【解决方案1】:

您必须独立查询每个视图才能获得实时计数。您可以使用以下查询动态生成 SQL 语句:

select 'select count(*) as '||view_name||' from '||owner||'.'||view_name||';'
from all_views
where (owner ,view_name) in (select schema_name, view_name from metadata) ;

您可以使用下面的 PL/SQL 块动态地执行此操作。最好将结果插入表格中:

declare
    v_cnt integer;
begin

    for r in (select owner, view_name from all_views
              where (owner ,view_name) in (select schema_name, view_name 
                                           from metadata)) 
    loop
        execute immediate 'select count(*) from ' || r.owner||'.'||view_name 
            into v_cnt;
        insert into cnt_table(view_name,owner,total_count)
        values (r.view_name,r.owner,v_cnt);
    end loop;

end;

【讨论】:

  • @django_unchained:非常感谢您的提示!有没有办法一次执行生成的单个查询,即像一个过程?
  • 更新了我的答案
  • 一步检查(owner, view_name)更安全,避免schema_name存在和view_name存在但没有视图schema_name.view_name的事故。
  • 好点。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
相关资源
最近更新 更多