답변:
DBA_DEPENDENCIES
view는 그러한 질문에 대한 모든 답을 가지고 있습니다.
select * from DBA_DEPENDENCIES
where referenced_owner='HR' and referenced_name='STORED_PROCEDURE_41';
DBA_DEPENDENCIES
특정 객체가 드롭되면 무효화되는 것과 같은 것을 더 보여줍니다. 예를 들어 테이블을 참조하는 뷰를 찾을 수 있습니다.
이것은 작동하는 것으로 보입니다-@MindaugasRiauba의 대답보다 덜 우아하지만 모든 패키지에서 참조를 찾는 것 같습니다.
SELECT * FROM all_source
where UPPER(TEXT) like UPPER('%STORED_PROCEDURE_NAME%')
비슷한 상황이 있었는데 특정 패키지를 사용하는 패키지 목록을 검색하기 만하면됩니다. 그래서이 쿼리를 만들었습니다. 아마 도움이 될 것입니다.
with dep2 as (
select dep.*
from all_dependencies dep
where dep.owner not in ('SYS', 'SYSTEM', 'PUBLIC', 'XDB')
and dep.referenced_owner not in ('SYS', 'SYSTEM', 'PUBLIC', 'XDB')
and dep.referenced_type = 'PACKAGE'
and dep.dependency_type != 'NON-EXISTENT'
and (dep.referenced_owner || '.' || dep.referenced_name) != (dep.owner || '.' || dep.name)
),
dep3 as (
select owner || '.' || name as child,
referenced_owner || '.' || referenced_name as parent
from dep2
)
select connect_by_root parent, lpad(' ',2*(level-1)) || to_char(child)
from dep3
start with parent = 'SCHEMA.PACKAGE_NAME'
connect by nocycle prior child = parent
and exists (select 1 from all_source where (owner || '.' || name) = dep3.child and upper(text) like upper('%optional, some string you may want to search%'))
;