-- 조합 데이터 타입의 2가지 종류

 -- 1. 레코드 (RECORD)

 -- 2. 컬렉션 (COLLECTION)


-- CURSOR

-- 수행하는 SQL문의 결과를 처리하기 위한 메모리영역

 -- 1. 암시적 커서: SQL%rowcount와 같은 커서를 말한다.

 -- 2. 명시적 커서: 메모리를 올려놓고 빈곳에다가 올리고 싶은 데이터를 올린다. 


-- EMP_CURSOR%FOUND : 커서에서 데이터가 발견되면 TRUE

-- EMP_CURSOR%NOTFOUND : 커서에서 데이터가 발견되지 않으면 TRUE 


1-2 부서번호를 입력하면 해당 부서번호에 속한 사원들의 사원번호, 이름, 월급을 출력하는 프로시저를 작성하라.


SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE PR_TAB_EMP867_ALL_DATA

(P_DEPT_NO NUMBER)

IS

-- CURSOR 명 : EMP_CURSOR

-- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다.

    CURSOR EMP_CURSOR IS

    SELECT EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL

    FROM TB_LS_EMP867

    WHERE DEPT_NO = P_DEPT_NO;

  

-- 변수를 선언한다.

    V_EMP_NO NUMBER(8) := 0;

    V_EMP_ID VARCHAR2(30);

    V_EMP_NM VARCHAR2(20);

    V_DEPT_NO NUMBER(4) := 0;

    V_SAL NUMBER(10) := 0;

    

BEGIN


-- CURSOR를 연다.

    OPEN EMP_CURSOR;

-- LOOP 을 돌리면서 EMP_CURSOR 안에 담긴 데이터들을 변수에 삽입한다.

    LOOP

-- FETCH: (어디를가서)가져오다.

      FETCH EMP_CURSOR INTO V_EMP_NO, V_EMP_ID, V_EMP_NM, V_DEPT_NO, V_SAL;

      EXIT WHEN EMP_CURSOR%NOTFOUND;

      DBMS_OUTPUT.PUT_LINE(V_EMP_NM || '님의 레코드는 다음과 같습니다. : ' || V_DEPT_NO || ' | ' || V_EMP_NM || ' | ' || V_EMP_ID || ' | '  

|| V_DEPT_NO || ' | ' || V_SAL );

    END LOOP;

-- CURSOR를 닫는다.

    CLOSE EMP_CURSOR;

    

END;

/


EXEC PR_TAB_EMP867_ALL_DATA(82);



+ Recent posts