Вы можете использовать что-то вроде функции dependent_views
, код ниже. Пример использования:
select dependent_views('CUSTOMER_NAME', 'CUSTOMERS') list from dual
Output:
LIST
-----------------
SCOTT.V_PERSONS
Функция ищет dependendent виды в ALL_DEPENDENCIES
, следующие поиски TEXT
столбцов из ALL_VIEWS
для совпадения column_name.
Примечание: поскольку all_dependences может не содержать полные данные зависимых объектов (например, когда представление было создано путем немедленного выполнения), моя функция может не найти этот объект. Также, если column_name
является подстрокой другого столбца - функция может возвращаться ко многим представлениям.
create or replace function dependent_views
(i_column varchar2, i_table varchar2, i_owner varchar2 default USER)
return varchar2 is
o_ret varchar2(4000) := '';
v_text long := '';
begin
for o in (
select * from all_dependencies
where referenced_name = upper(i_table)
and referenced_owner = upper(i_owner)
and type = 'VIEW')
loop
begin
select text into v_text from all_views
where view_name = o.name and owner = o.owner;
exception when no_data_found then
null;
end;
if upper(v_text) like '%'||upper(i_column)||'%' then
o_ret := o_ret||o.owner||'.'||o.name||' ';
end if;
end loop;
return o_ret;
end dependent_views;
alter table drop column ограничивать? – jarlh