簡體   English   中英

PL SQL從100個視圖中計數行,而沒有全部

[英]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_namesview_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM