| |
USER_SOURCE 데이터 사전에서 확인 가능하다.
-- USER_SOURCE의 구조를 살펴보면
SQL> DESC USER_SOURCE
이름 유형
------------- ----------------
NAME VARCHAR2(30)
TYPE VARCHAR2(12)
LINE NUMBER
TEXT VARCHAR2(4000)
-- 어떤 프로시져들이 존재하는지 확인
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;
|