我正在尝试计算每个视图在oracle数据库中的行数。
观看次数超过100次。
我希望它显示视图名称和行数。
我试过
SELECT VIEW_NAME, COUNT(*) FROM ALL_VIEWS
但这不起作用。
我使用view_name and max(rownum)
的分组尝试了类似的查询,但这也没有用。
SQL I写作正在生成view_names or max(rownum)
分配给view_names
的计数。我需要每个人view_name
的行数。
有一种简单的方法吗?
谢谢,
罗布
答案 0 :(得分:5)
说你有意见:
create or replace view viewTwoRows as select level as l from dual connect by level <= 2;
create or replace view viewTenRows as select level as l from dual connect by level <= 10;
您可以使用以下命令在单个语句中查询每个视图:
select view_name,
to_number(extractvalue( xmltype(dbms_xmlgen.getxml('select count(*) c from '||VIEW_NAME)) ,'/ROWSET/ROW/C'))
from all_views;
VIEW_NAME NUM
------------------------------ ----------
VIEWTENROWS 10
VIEWTWOROWS 2
以不同的方式,您可以遍历视图并查询它们;例如:
declare
c number;
begin
for i in (
select view_name, 'select count(*) as c from ' || view_name as statement
from all_views
) loop
execute immediate i.statement into c;
dbms_output.put_line('View ' || i.view_name || ': ' || c);
end loop;
end;