[英]Count of rows from all views in Oracle with a condition
我正在嘗試從 oracle 模式中的視圖中獲取所有行的計數,並且我的代碼運行良好。 但是,當我嘗試添加諸如 where actv_ind = 'Y' 之類的條件時,我無法使其正常工作。 關於如何修改代碼以使其正常工作的任何建議?
SELECT view_name, TO_NUMBER(extractvalue(xmltype(dbms_xmlgen.getxml('select count(*) cnt from '||owner||'.'||view_name|| 'where'||view_name||'.'||'actv_ind= Y')),'/ROWSET/ROW/CNT')) as VIEW_CNT FROM all_views WHERE owner = 'ABC' AND view_name not in ('LINK$')
我收到錯誤 ACTV_IND:標識符無效。
來自 DBMS_XMLGEN 的錯誤消息不是很有幫助,因此您需要非常小心 SQL 語句的語法。 在where
前后添加一個空格,並在Y
周圍添加引號:
SELECT view_name,
TO_NUMBER(extractvalue(xmltype(dbms_xmlgen.getxml('select count(*) cnt from '||owner||'.'||view_name||
' where '||view_name||'.'||'actv_ind= ''Y''')),'/ROWSET/ROW/CNT')) as VIEW_CNT
FROM all_views
WHERE owner = 'ABC' AND view_name not in ('LINK$');
該查詢仍然假定每個視圖都包含 ACTV_IND 列。 如果不是這樣,您可能希望基於DBA_TAB_COLUMNS WHERE COLUMN_NAME = 'ACTV_IND'
的查詢。
這是我用於測試的簡單示例架構:
create user abc identified by abc;
create or replace view abc.view1 as select 1 id, 'Y' actv_ind from dual;
create or replace view abc.view2 as select 2 id, 'N' actv_ind from dual;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.