Database

[오라클DB] PL/SQL 프로시저 반복문 - 0329 2교시

웨일파도 2023. 3. 29. 11:19
반응형
--0329 DB7 2교시 : 프로시저 반복문
 -- FOR ~ LOOP, END LOOP

--부서번호를 받아서 해당 부서사람의 사번, 이름, 급여 정보 출력
SET SERVEROUTPUT ON;

SELECT * FROM EMP;

CREATE OR REPLACE PROCEDURE LOOP_TEST1 (
    P_DEPTNO IN EMP.DEPTNO%TYPE)
IS
    TYPE EMPNO_TABLE IS TABLE OF EMP.EMPNO%TYPE
    INDEX BY BINARY_INTEGER;
    TYPE ENAME_TABLE IS TABLE OF EMP.ENAME%TYPE
    INDEX BY BINARY_INTEGER;
    TYPE SAL_TABLE IS TABLE OF EMP.SAL%TYPE
    INDEX BY BINARY_INTEGER;
    
    EMPNO_ARR EMPNO_TABLE;
    ENAME_ARR ENAME_TABLE;
    SAL_ARR SAL_TABLE;
    
    i BINARY_INTEGER := 0; --반복문에 사용할 변수
BEGIN
    FOR EMP_LIST IN (SELECT EMPNO, ENAME, SAL 
                    FROM EMP
                    WHERE DEPTNO = P_DEPTNO) LOOP 
    i := i + 1;
    EMPNO_ARR(i) := EMP_LIST.EMPNO; --EMPNO_ARR(7369,7499,7521,...)
    ENAME_ARR(i) := EMP_LIST.ENAME;
    SAL_ARR(i) := EMP_LIST.SAL;
    
    END LOOP;
    
    FOR CNT IN 1..i LOOP
        DBMS_OUTPUT.PUT_LINE('사원번호 : ' || EMPNO_ARR(CNT));
        DBMS_OUTPUT.PUT_LINE('사원이름 : ' || ENAME_ARR(CNT));
        DBMS_OUTPUT.PUT_LINE('사원급여 : ' || SAL_ARR(CNT));
        DBMS_OUTPUT.PUT_LINE('----------------------------');
    END LOOP;
END;
/

EXECUT LOOP_TEST1(10);
반응형

'Database' 카테고리의 다른 글

[MySQL] 테이블 분할 & 분석(PARTITION BY)  (0) 2023.11.25
[오라클DB] 프로시저 복습문제 - 0329 1교시  (0) 2023.03.29
[DB] SQL 기본  (0) 2023.03.29
[오라클DB] PL/SQL 프로시저  (0) 2023.03.28
[오라클DB] 뷰 VIEW  (0) 2023.03.28