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;

-- 1. WHILE .. LOOP 을 중첩으로 사용하여 4단 ~7단까지 출력하는 프로시저를 생성해보아라.


CREATE OR REPLACE PROCEDURE PR_GUGUDAN_4TO7

IS 


  V_OUT_DAN NUMBER(2) := 7;

  V_IN_DAN NUMBER(2) := 9;

  i NUMBER(2) := 3;

  j NUMBER(2) := 0;

  

BEGIN    -- 내가 생각하는 while 문 문법과 조금 다르다.

  <<Outer_loop>>

    WHILE i < V_OUT_DAN LOOP

      i := i+1;

      j := 0;

    DBMS_OUTPUT.PUT_LINE(i);

    <<Inner_loop>>

      WHILE j < V_IN_DAN LOOP

        j := j+1;

        DBMS_OUTPUT.PUT_LINE(j);

        DBMS_OUTPUT.PUT_LINE( i || '*' || j || ' = ' || i*j );

      END LOOP Inner_loop;

    END LOOP Outer_loop;

END;

/


EXEC PR_GUGUDAN_4TO7;



2-1. 부서번호를 물어보게 하고 부서번호를 입력하면 해당 부서번호의 토탈월급을 출력되게 하시오.


SET SERVEROUTPUT ON

SET VERIFY OFF

ACCEPT P_DEPT_NO PROMPT '부서번호를 입력하시오!'

DECLARE 

  V_DEPT_NO NUMBER(4) := &P_DEPT_NO; --&를 배먹으면 안된다.

  V_SUM_SAL NUMBER(10) := 0;

BEGIN 

  SELECT SUM(SAL) 

  INTO V_SUM_SAL

  FROM TB_LS_EMP867

  WHERE DEPT_NO = V_DEPT_NO;

  

  DBMS_OUTPUT.put_line('TOTAL SALAD: '||V_SUM_SAL);

END;

/



2-2. 부서번호를 입력하면 해당 부서번호의 토탈월급을 출력되게 하는 프로시저를 만들어라.

-- 프로시저호출 EXEC PR_DEPT_TOT_SAL(82)은 82번으로 해라.

CREATE OR REPLACE PROCEDURE PR_DEPT_TOT_SAL

  ( P_DEPT_NO IN NUMBER ) 

IS


BEGIN

  DECLARE

  V_DEPT_SAL NUMBER(10):= 0;


  BEGIN 

    SELECT SUM(SAL) 

    INTO V_DEPT_SAL

    FROM TB_LS_EMP867 

    WHERE DEPT_NO = P_DEPT_NO;

    DBMS_OUTPUT.PUT_LINE(V_DEPT_SAL);

  END;

  

END;

/


EXEC PR_DEPT_TOT_SAL(82);


-- 부서번호를 입력하면 해당 부서번호의 토탈월급을 출력되게 하는 프로시저를 만들어라.

-- 프로시저호출 EXEC PR_DEPT_TOT_SAL(82)은 82번으로 해라.

CREATE OR REPLACE PROCEDURE PR_DEPT_TOT_SAL

  ( P_DEPT_NO IN NUMBER ) 

IS 

  V_DEPT_SAL NUMBER(10):= 0;  -- DECLARE는 생략가능하다.


  BEGIN 

    SELECT SUM(SAL) 

    INTO V_DEPT_SAL

    FROM TB_LS_EMP867 

    WHERE DEPT_NO = P_DEPT_NO;

    DBMS_OUTPUT.PUT_LINE(V_DEPT_SAL);

  END;

  

/


EXEC PR_DEPT_TOT_SAL(82);



3-1. 사원번호를 물어보게 하고 사원의 부서번호, 이름, 월급, 아이디를 출력하게 하시오.

SET SERVEROUTPUT ON

ACCEPT P_EMP_NO PROMPT '사원번호를 입력하시오!'

DECLARE 

  V_EMP_NO NUMBER(8) := LPAD(&EMP_NO,8,0);

  V_EMP_NM VARCHAR2(30);

  V_EMP_ID VARCHAR2(30);

  V_SAL NUMBER(20) := 0;

  V_DEPT_NO NUMBER(4) := 0;


BEGIN 

  SELECT EMP_NM, EMP_ID, SAL, DEPT_NO 

  INTO V_EMP_NM, V_EMP_ID, V_SAL, V_DEPT_NO

  FROM TB_LS_EMP867

  WHERE EMP_NO = V_EMP_NO;

  DBMS_OUTPUT.put_line('이름: ' || V_EMP_NM);

  DBMS_OUTPUT.put_line('부서번호: ' || V_DEPT_NO);

  DBMS_OUTPUT.put_line('아이디: ' || V_EMP_ID);

  DBMS_OUTPUT.put_line('월급: ' || V_SAL);

END;  

/



3-2. 사원번호를 입력하면 해당사원의 부서번호, 이름, 월급, 아이디를 출력하는 프로시저를 만들어라.

-- 프로시저호출 EXEC PR_MEM_INFO(1)은 1번으로 해라. 

CREATE OR REPLACE PROCEDURE PR_MEM_INFO 

  (P_EMP_NO IN NUMBER) -- 프로시저의 IN, OUT 변수를 만들때에는 BYTE수를 쓰지 않아야한다. NUMBER(8)이런거 ERROR


IS

  V_EMP_NM VARCHAR2(30);

  V_EMP_ID VARCHAR2(30);

  V_SAL NUMBER(20) := 0;

  V_DEPT_NO NUMBER(4) := 0;

  

BEGIN

  SELECT EMP_NM, EMP_ID, SAL, DEPT_NO 

  INTO V_EMP_NM, V_EMP_ID, V_SAL, V_DEPT_NO

  FROM TB_LS_EMP867

  WHERE EMP_NO = P_EMP_NO;

  DBMS_OUTPUT.put_line('이름: ' || V_EMP_NM);

  DBMS_OUTPUT.put_line('부서번호: ' || V_DEPT_NO);

  DBMS_OUTPUT.put_line('아이디: ' || V_EMP_ID);

  DBMS_OUTPUT.put_line('월급: ' || V_SAL);

END;

/


EXEC PR_MEM_INFO(1);

-- ★☆★☆★ basic loop (FOR LOOP)

-- 1.숫자 1부터 20까지 출력하는데 for loop 문으로 구현해서 출력하시오.


SET SERVEROUTPUT ON -- default : serveroutput (dbms_output.put_line) 이 OFF 상태이다.


BEGIN 

  FOR i IN 1..20 LOOP

    DBMS_OUTPUT.PUT_LINE('출력숫자 : ' || i );

  END LOOP;

END;  

/


-- 2. FOR .. LOOP 사용하여 구구단 6단을 출력하시오.


DECLARE 

  V_COUNT NUMBER(10) := 0;

BEGIN 

  FOR i IN 1..9 LOOP

    V_COUNT := 6 * i;

    DBMS_OUTPUT.PUT_LINE ( '6' || ' * ' || i || ' = ' || 6*i); 

  END LOOP;

END;

/


--3. FOR LOOP 을 중첩해서 구구단 2단 ~ 4단까지 출력하시오.


BEGIN   

  FOR i IN 2..4 LOOP

    FOR j IN 1..9 LOOP

    DBMS_OUTPUT.PUT_LINE( i || ' * ' || j  || ' = ' || i*j);  

    END LOOP;

  END LOOP;

END;

/


-- LPAD 함수: 좌측에 자리수 만큼 채워주는 함수

-- 사용법 : LPAD(변수, 길이, 변형자)

-- ex) SELECT LPAD('123',8,0) FROM DUAL


--4. TB_LS_EMP867 테이블을 생성하고 for 문을 이용해서 data를 입력하시오.


CREATE TABLE TB_LS_EMP867

  ( EMP_NO  NUMBER(8), EMP_ID VARCHAR2(12) );

  

DECLARE 

  V_EMP_NO VARCHAR2(8):= 0; 

  V_EMP_ID VARCHAR2(12);


BEGIN 

  FOR i IN 1..20 LOOP

    INSERT INTO TB_LS_EMP867(EMP_NO, EMP_ID)

    VALUES (LPAD((i),8,0),'KOR-'|| LPAD((i),8,0));

  END LOOP;  

END;

/

SELECT * FROM TB_LS_EMP867;


--5. 프로시저를 만들어보자.

CREATE OR REPLACE PROCEDURE PR_ISRT_TAB_EMP

IS

BEGIN

  DECLARE 

    V_EMP_NO VARCHAR2(8):= 0; 

    V_EMP_ID VARCHAR2(12);

  

  BEGIN 

    FOR i IN 1..20 LOOP

      INSERT INTO TB_LS_EMP867(EMP_NO, EMP_ID)

      VALUES (LPAD((i),8,0),'KOR-'|| LPAD((i),8,0));

    END LOOP;  

  END;

END;   

/


EXEC PR_ISRT_TAB_EMP;

--EXECUTE PR_ISRT_TAB_EMP;

--CALL PR_ISRT_TAB_EMP;


SELECT * FROM TB_LS_EMP867;


1. eclipse 를 설치하기 위해서는 ( 현재 Mars 다음 Neon 버전 )

jdk 1.8 이상이어야한다. 따라서 jdk 1.7 이하 버전이 설치 되어있으면 해당 eclipse 를 설치할 수 없다. 


2. 아래 url 로 들어가서 jdk를 down 받는다.  (1.8)

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


3. 다운받은 jdk ( Java Development tool Kit )를  설치한다.


4. jdk 설치 후  환경변수를 설정해야한다.

해당 jdk1.8 은 /Library/Java/JavaVirtualMachines 밑에 생성된다.

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home 을 PATH 설정해줘야한다.


5. 터미널을 실행한다.  cd /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents 

cd Home


6. i 를 입력하여 insert 모드로 들어간다. 

export JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home 를 추가해준다.


7. ESC 를 입력하여 insert 모드에서 빠져나온다. 


8. 이클립스(eclipse)를 install 한다.


참고할 url :

 http://ishappy.tistory.com/entry/MAC-OS-X-%EC%97%90-JDK-%EC%84%A4%EC%B9%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 Mac vi mode 명령어 참고 :

1. http://parklize.blogspot.kr/2014/10/mac-vim-command.html

2. http://devfalledinmac.tistory.com/12


1. 터미널 실행 방법 

 control + space 를 입력하면 Spotlight 검색이 가능하다 여기서 터미널 혹은terminal을 실행 시켜주면된다.


2. 기본적인 터미널 명령어들

ls : 디렉토리에 있는 파일 및 폴더의 리스트를 보여준다.  ( Windows : dir )

cd : change directory 로 폴더(디렉토리)를 변경한다.  ( Windo

ws : cd )

clear : clear screen 으로 화면에 있는 모든 글씨를 깨끗하게 비워준다.  ( Windows : cls )

cp : 저장된 디렉토리로 파일을 복사해준다.  ( Windows : copy )

rm : 파일을 삭제한다.  ( Windows : del ) 

ipconfig getifaddren0 : ip와 같은 네트워크 설정을 본다.  ( Windows : ipconfig ) 

logout :콘솔을 종료한다.  ( Windows : exit )  


3. macOS 확인 

좌측 상단 Apple  ( 사과 모양 클릭 ) 이 Mac 에 관하여 선택

 

+ Recent posts