PL/SQL (13) FOR .. LOOP을 활용하여 EMP745 테이블의 레코드를 업데이트하여라.

2019. 4. 4. 14:22 Database/Oracle PLSQL

SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE PR_EMP_TEST9(P_DEPT_NO NUMBER)

    -- CURSOR 명 : EMP_CURSOR

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

IS

    CURSOR EMP_CURSOR IS

    SELECT EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL

    FROM TB_LS_EMP867

    WHERE DEPT_NO = P_DEPT_NO;

    

BEGIN

    -- CURSOR OPEN 사용 X, FETCH 사용 X, EMP_RECORD 임의부여

    FOR EMP_RECORD IN EMP_CURSOR LOOP

       DBMS_OUTPUT.PUT_LINE(EMP_RECORD.EMP_NM || '님의 레코드는 다음과 같습니다. 

: ' || EMP_RECORD.EMP_NO || ' | ' || EMP_RECORD.EMP_ID || ' | ' || EMP_RECORD.DEPT_NO || ' | ' || EMP_RECORD.SAL );

      IF EMP_RECORD.SAL > 3000000 

      THEN INSERT INTO EMP745(EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL, INCOME_LVL) 

-- TABLE의 컬럼에 대해 반드시 명시해주자. 

          VALUES (EMP_RECORD.EMP_NO, EMP_RECORD.EMP_NM, EMP_RECORD.EMP_ID, 

EMP_RECORD.DEPT_NO, EMP_RECORD.SAL, '고소득');

      ELSE 

      INSERT INTO EMP745(EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL, INCOME_LVL)

-- TABLE의 컬럼에 대해 반드시 명시해주자. 

          VALUES (EMP_RECORD.EMP_NO, EMP_RECORD.EMP_NM, EMP_RECORD.EMP_ID,

EMP_RECORD.DEPT_NO, EMP_RECORD.SAL, '저소득');

      END IF;

    END LOOP;

END;

/


EXEC PR_EMP_TEST9(82);

SELECT * FROM EMP745;

DELETE FROM EMP745;



출처: https://sourceflower.tistory.com/37?category=608037 [소스플로우]