【发布时间】:2020-06-28 17:29:00
【问题描述】:
【问题讨论】:
-
您是否随意显示所有模式中的all 视图的计数?或者,是否有一些您想要报告的固定和已知视图?
【问题讨论】:
您必须独立查询每个视图才能获得实时计数。您可以使用以下查询动态生成 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;
【讨论】:
(owner, view_name)更安全,避免schema_name存在和view_name存在但没有视图schema_name.view_name的事故。