PL/SQL (3) 프로시저를 사용하여 다른테이블로 INSERT 예제

2019. 4. 3. 15:28 Database/Oracle PLSQL

1-1. 사원번호를 물어보게하고 사원번호를 입력하면 해당 사원의 모든 컬럼의 정보가  EMP745 테이블에 입력되게 하는 PL/SQL을 작성하시

오.

SELECT * FROM EMP745;

-----------------------------------------------------------------------------------------------------

SET SERVEROUTPUT ON;

ACCEPT P_EMP_NO PROMPT 'EMP745테이블로 복사할 사원번호를 입력하세요'


DECLARE 

  V_DEPT_NO NUMBER(4) := 0;

  V_EMP_NO NUMBER(8) := &P_EMP_NO;

  V_EMP_NM VARCHAR2(20);

  V_EMP_ID VARCHAR2(30);

  V_SAL NUMBER(10) :=0;

BEGIN

  SELECT DEPT_NO, EMP_NO, EMP_NM, EMP_ID, SAL 

  INTO V_DEPT_NO, V_EMP_NO, V_EMP_NM, V_EMP_ID, V_SAL

  FROM TB_LS_EMP867

  WHERE EMP_NO = V_EMP_NO;

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

V_SAL);

  

  -- EMP745테이블에 DB MIGRATION

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

  VALUES (V_DEPT_NO, V_EMP_NO, V_EMP_NM, V_EMP_ID, V_SAL);

  

END;

/

-- EMP745 테이블 확인 

SELECT * FROM EMP745;


1-2. 사원번호를 입력하면 해당 사원의 모든 컬럼의 정보가  EMP745 테이블에 입력되게 하는 프로시저를 생성하라.

-- EXEC PR_MIG_EMP745(1)

-- LPAD 함수를 사용하라. LPAD(변수,8,0)


CREATE OR REPLACE PROCEDURE PR_MIG_EMP745

  (P_EMP_NO NUMBER)


IS

  V_DEPT_NO NUMBER(4) := 0;

  V_EMP_NO NUMBER(8) := LPAD(P_EMP_NO,8,0);   --LPAD 함수를 사용

  V_EMP_NM VARCHAR2(20);

  V_EMP_ID VARCHAR2(30);

  V_SAL NUMBER(10) :=0;


BEGIN

  

  SELECT DEPT_NO, EMP_NO, EMP_NM, EMP_ID, SAL 

  INTO V_DEPT_NO, V_EMP_NO, V_EMP_NM, V_EMP_ID, V_SAL

  FROM TB_LS_EMP867

  WHERE EMP_NO = V_EMP_NO;

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

V_SAL);

  

  -- EMP745테이블에 DB MIGRATION

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

  VALUES (V_DEPT_NO, V_EMP_NO, V_EMP_NM, V_EMP_ID, V_SAL);

  

END;

/


EXEC PR_MIG_EMP745(2);

SELECT * FROM EMP745;



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