'Procudure'에 해당되는 글 1건

  1. 2008.11.21 [Oracle] 프로시저나 펑션내용 검색하기 (1)
2008. 11. 21. 13:43

[Oracle] 프로시저나 펑션내용 검색하기

프로시저나 펑션을 만들다 보면 여러 소스코드 파일을 검색하듯이 여러 프로시저나 펑션의 내용을 검색하고자 할 경우가 있습니다.

 

결론부터 말하자면 USER_SOURCE 를 이용하면 됩니다.

SELECT *
FROM   USER_SOURCE
WHERE  TYPE = 'PROCEDURE'
AND    text like  '%hello%'
ORDER BY name, line

프로시저에서 "hello"라는 글자가 들어간 부분을 찾는다는 의미입니다.

(TYPE = 'FUNCTION" 으로 하면 펑션에서 검색하게 됩니다.)

 

아래는 USER_SOURCE뷰의 스크립트입니다. (Oracle8i 기준입니다.)

CREATE OR REPLACE VIEW USER_SOURCE

(NAME, TYPE, LINE, TEXT)
AS
select o.name,
decode(o.type#, 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
               11, 'PACKAGE BODY', 13, 'TYPE', 14, 'TYPE BODY',
               'UNDEFINED'),
s.line, s.source
from sys.obj$ o, sys.source$ s
where o.obj# = s.obj#
  and o.type# in (7, 8, 9, 11, 13, 14)
  and o.owner# = userenv('SCHEMAID')
union
select o.name, 'JAVA SOURCE', s.joxftlno, s.joxftsrc
from sys.obj$ o, x$joxfs s
where o.obj# = s.joxftobn
  and o.type# = 28
  and o.owner# = userenv('SCHEMAID')
/



Trackback 0 Comment 1
  1. 준호씨 2009.03.11 17:58 신고 address edit & del reply

    참고로 LIKE 사용시 "_"는 와일드카드 문자라 "\_" 처럼 입력해 주어야 되더군요.
    http://blog.naver.com/gidarim21?Redirect=Log&logNo=20029271575
    참고~