ORACLE/SQL2009. 1. 22. 20:57
반응형


◎ SQL PLUS상에서 STORED PROCEDURE 소스 확인 방법



USER_SOURCE 데이터 사전을 이용하면 됩니다.
 
  -- USER_SOURCE의 구조를 살펴보면
  SQL>
DESC USER_SOURCE
   
        이름            유형
------------- ------------------
        NAME          VARCHAR2(30)
        TYPE          VARCHAR2(12)
        LINE            NUMBER
        TEXT          VARCHAR2(4000)
 
 -
NAME : procedure, function, package의 이름을 가지고 있습니다.
 -
TYPE :  function, package, package body, procedure인지 알수 있습니다.
 -
LINE : function, package, package body, procedure의 라인을 보여줍니다.
 -
TEXT : function, package, package body, procedure의 소스를 알 수 있습니다.
 


 
-- 어떤 프로시져들이 존재하는지 확인 
SQL> SELECT DISTINCT
(name) FROM USER_SOURCE WHERE TYPE = ’PROCEDURE’;
 
NAME
------------------------------
FORCURSOR_TEST
IMPLICIT_CURSOR
 




-- 프로시져 소스의 확인
SQL> SELECT
text FROM USER_SOURCE WHERE name=’FORCURSOR_TEST’;

 -- 쿼리 결과
     PROCEDURE ForCursor_Test
        IS

        CURSOR dept_sum IS
        SELECT b.dname, COUNT(a.empno) cnt, SUM(a.sal) salary
        FROM emp a, dept b
        WHERE a.deptno = b.deptno
        GROUP BY b.dname;
     BEGIN
       -- Cursor를 FOR문에서 실행시킨다
       FOR emp_list IN dept_sum LOOP
          DBMS_OUTPUT.PUT_LINE(’부서명 : ’ || emp_list.dname);
          DBMS_OUTPUT.PUT_LINE(’사원수 : ’ || emp_list.cnt);
          DBMS_OUTPUT.PUT_LINE(’급여합계 : ’ || emp_list.salary);
       END LOOP;
   EXCEPTION
       WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE(SQLERRM||’에러 발생 ’);
   END;
 
18 개의 행이 선택되었습니다.


  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================
반응형
Posted by [PineTree]