Сообщения об ошибках от 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;