programing

모든 패키지에서 테이블 및/또는 열을 검색하기 위한 쿼리

elseif 2023. 3. 25. 10:53

모든 패키지에서 테이블 및/또는 열을 검색하기 위한 쿼리

패키지에 특정 테이블 및/또는 열이 사용되고 있는지 확인하기 위해 모든 패키지를 검색하기 위해 실행할 수 있는 쿼리가 있습니까?패키지가 너무 많아서 각각의 패키지를 열어 원하는 값을 찾을 수 없습니다.

다음과 같이 할 수 있습니다.

select *
from user_source
where upper(text) like upper('%SOMETEXT%');

또는 SQL Developer에는 이 작업을 수행하기 위한 보고서가 내장되어 있습니다.

View > Reports > Data Dictionary Reports > PLSQL > Search Source Code

USER_SOURCE용 11G 문서는 이쪽

뷰를 사용할 수 있습니다.*_DEPENDENCIES예를 들어 다음과 같습니다.

SELECT owner, NAME
  FROM dba_dependencies
 WHERE referenced_owner = :table_owner
   AND referenced_name = :table_name
   AND TYPE IN ('PACKAGE', 'PACKAGE BODY')

경우에 따라서는, 찾고 있는 컬럼이, 관심이 없는 다른 많은 것의 이름의 일부일 수도 있습니다.

예를 들어 최근에 "BQR"이라는 칼럼을 찾았는데, "BQR_OWNER", "PROP_BQR" 등과 같은 다른 컬럼의 일부이기도 합니다.

그래서 워드프로세서가 '전체 워드만'이라고 표시해야 하는 체크박스를 붙이고 싶습니다.

유감스럽게도 LIKE에는 이러한 기능이 없지만 REGEXP_LIKE가 도움이 됩니다.

SELECT *
  FROM user_source
 WHERE regexp_like(text, '(\s|\.|,|^)bqr(\s|,|$)');

이 열을 찾고 이름의 일부로 "BQR"이 있는 다른 열을 제외하는 정규 표현식은 다음과 같습니다.

(\s|\.|,|^)bqr(\s|,|$)

정규 표현은 공백(\s), (|) 마침표(.), (|) 쉼표(,) 또는 (|) 줄 시작(^)에 이어 공백, 쉼표 또는 줄 끝($)과 일치합니다.

덧붙여서, 「UPER(bqr)」로 사용할 수 있기 때문에, 「」나 「」등의 문자를 추가할 필요가 있는 경우는, 이러한 옵션을 전후 문자 리스트에 추가할 수 있습니다.

(\s|\(|\.|,|^)bqr(\s|,|\)|$)

언급URL : https://stackoverflow.com/questions/4852993/query-to-search-all-packages-for-table-and-or-column