[英]Pl SQL count rows from 100 views without union all
我試圖計算每個視圖在oracle數據庫中具有的行數。
有100多個視圖。
我希望它顯示視圖名稱和行數。
我試過了
SELECT VIEW_NAME, COUNT(*) FROM ALL_VIEWS
但這是行不通的。
我使用view_name and max(rownum)
的group by嘗試了類似的查詢,但這也行不通。
我正在編寫的SQL正在生成分配給view_names
的view_names or max(rownum)
的計數。 我需要每個view_name
的行數。
有沒有簡單的方法可以做到這一點?
謝謝,
搶
說您有以下觀點:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.