◎ 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 개의 행이 선택되었습니다.
|