◎ 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'; -- TYPE은 대소문자 구별!! 반드시 대문자로 써줄것!
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)
================================================
* 오라클 정보공유 커뮤니티 oracleclub.com
* http://www.oracleclub.com
* http://www.oramaster.net
* 운영자 : 김정식 (oramaster _at_ naver.com)
================================================
http://blog.naver.com/urmyeternity/60042418419
'Other > DB' 카테고리의 다른 글
[MAC] h2 database 연결 오류(90149) (3) | 2019.11.25 |
---|---|
Toad Editor 단축키 (0) | 2012.08.20 |
PL/SQL 프로시저 (procedure) (0) | 2012.08.14 |
MySQL : 해당 필드에 중복된 값 찾기 (0) | 2012.06.15 |
mysql - DATE_FORMAT & TIME_FORMAT (1) | 2012.06.12 |