-- 조합 데이터 타입의 2가지 종류
-- 1. 레코드 (RECORD)
-- 2. 컬렉션 (COLLECTION)
-- CURSOR
-- 수행하는 SQL문의 결과를 처리하기 위한 메모리영역
-- 1. 암시적 커서: SQL%rowcount와 같은 커서를 말한다.
-- 2. 명시적 커서: 메모리를 올려놓고 빈곳에다가 올리고 싶은 데이터를 올린다.
-- EMP_CURSOR%FOUND : 커서에서 데이터가 발견되면 TRUE
-- EMP_CURSOR%NOTFOUND : 커서에서 데이터가 발견되지 않으면 TRUE
###########################################################################################
1-1. 부서번호를 물어보게 하고 부서번호를 입력하면 해당 부서번호에 속한 사원들의 사원번호, 이름, 월급을 출력하시오.
SET SERVEROUTPUT ON;
ACCEPT P_DEPT_NO PROMPT '정보를 원하는 부서번호를 입력하세요.';
DECLARE
-- CURSOR 명 : EMP_CURSOR
-- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다.
CURSOR EMP_CURSOR IS
SELECT EMP_NO, EMP_NM, EMP_ID, 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_NM, V_EMP_ID, 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;
/
'PL-SQL' 카테고리의 다른 글
PL/SQL (7) CURSOR, WHILE LOOP을 활용하여 데이터 확인하기 (0) | 2017.03.24 |
---|---|
PL/SQL (6) CURSOR, BASIC LOOP을 활용한 프로시저 만들어보기 (0) | 2017.03.24 |
PL/SQL (4) ORA-01403: no data found 대처 SQL문 (EXCEPTIOIN) (0) | 2017.03.24 |
PL/SQL (3) 프로시저를 사용하여 다른테이블로 INSERT 예제 (0) | 2017.03.23 |
PL/SQL (2) WHILE.. LOOP , 예제 (0) | 2017.03.23 |