by 구루비 명시적 커서 EXPLICIT CURSOR OPEN FETCH CLOSE PL/SQL CURSOR [2002.01.20]
-- 특정 부서의 평균급여와 사원수를 출력.. SQL> CREATE OR REPLACE PROCEDURE ExpCursor_Test (v_deptno IN dept.deptno%TYPE) IS CURSOR dept_avg IS SELECT b.dname, COUNT(a.empno) cnt, ROUND(AVG(a.sal),3) salary FROM emp a, dept b WHERE a.deptno = b.deptno AND b.deptno = v_deptno GROUP BY b.dname ; -- 커서를 패치하기 위한 편수 선언 v_dname dept.dname%TYPE; emp_cnt NUMBER; sal_avg NUMBER; BEGIN -- 커서의 오픈 OPEN dept_avg; -- 커서의 패치 FETCH dept_avg INTO v_dname, emp_cnt, sal_avg; DBMS_OUTPUT.PUT_LINE('부서명 : ' || v_dname); DBMS_OUTPUT.PUT_LINE('사원수 : ' || emp_cnt); DBMS_OUTPUT.PUT_LINE('평균급여 : ' || sal_avg); -- 커서의 CLOSE CLOSE dept_avg; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 '); END; / -- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용 SQL> SET SERVEROUTPUT ON ; SQL> EXECUTE ExpCursor_Test(30); 부서명 : SALES 사원수 : 6 평균급여 : 1550.833
- 강좌 URL : http://www.gurubee.net/lecture/1064
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.