오늘은 어떤 개발자 과장님이 갑자기 요청하신 내용이라서 가져와봤습니다.
내가 만든 프로시저 안에 테이블이나 함수 같은거 검색하고 싶은데 그게 될까?
%like% 를 이용하면 될 것 같은데 해.. 해보겠습니다!
프로시저를 사용할 때 다른 프로시저를 호출하는 등 연관이 많고 사용할수록 목록도 늘어나기 때문에 어느 프로시저에 어떤 테이블이 사용되는지,
어떤 함수를 고쳐야하는데 이 함수를 사용하고 있는 프로시저들을 나열해야 할 때가 많을 것이다.
이럴때 DBA_SOURCE
를 사용하면 된다.
일단 이런 내용을 검색할 때 자주 사용하는 data dictrionary를 살펴보자
DBA_SOURCE : 프로시저,함수의 내용과 type 정보가 있음
DBA_OBJECTS : DB에 존재하는 모든 오브젝트의 목록 정보가 있음 (table, view, procedure, function...)
DBA_PROCEDURES : DB에 존재하는 프로시저 목록 정보 있음
프로시저에 있는 내용을 검색하고 싶다면 해당 쿼리를 돌려보면 된다.
Select *
From dba_source
Where 1=1
And type='procedure'
And text like '%검색하고싶은내용%'
Order by name, line;
함수에 있는 내용을 검색하고 싶다면 해당 쿼리를 돌려보면 된다.
Select *
From dba_source
Where 1=1
And type='function'
And text like '%검색하고싶은내용%'
Order by name, line;