본문 바로가기

빅데이터과정/PL/SQL

#9_140625_PL_SQL_IF 문

728x90

# IF문



문제31. 위의 소스를 수정해서 사원 이름을 물어보게하고 사원 이름을 입력 했을 떄 해당 사원의 월급이 3000 이상이면 고소득자 입니다. 1000이상이고 3000보다 작으면 적당합니다. 1000보다 작으면 저 소득자입니다라고 출력되게 PL/SQL 을 작성하시오

ACCEPT p_ename PROMPT '이름을 입력하시오 '

DECLARE
 v_ename emp.ename%TYPE := UPPER('&p_ename');
 v_sal EMP.sal%TYPE;

BEGIN
 SELECT sal INTO v_sal
 FROM EMP
 WHERE ename = v_ename;

 IF v_sal >= 3000 THEN
 dbms_output.put_line('고소득자입니다');
 ELSIF v_sal >= 1000 THEN
 dbms_output.put_line('적당합니다');
 ELSE
 dbms_output.put_line('저소득자입니다');
 END IF;
END;


/



문제33. 사원이름을 물어보게 하고 해당 사원이름을 입력했을 때 해당 사원이 근무한 달수가 400개월 이상이면 커미션을 5000으로 갱신하고 400달 보다 작으면 커미션을 2000으로 갱신하시오

ACCEPT p_ename PROMPT '이름을 입력하시오 '

DECLARE
 v_ename emp.ename%TYPE := UPPER('&p_ename');
 v_mon NUMBER(10);

BEGIN
 SELECT ROUND(MONTHS_BETWEEN(SYSDATE, hiredate)) INTO v_mon
 FROM EMP
 WHERE ename = v_ename;

 IF v_mon >= 400 THEN
  UPDATE EMP
  SET comm = 5000
  WHERE ename = v_ename;
 ELSE
  UPDATE EMP
  SET comm = 2000
  WHERE ename = v_ename;
 END IF;

 dbms_output.put_line (SQL%ROWCOUNT || ' 건의 커미션이 갱신됐습니다');
END;

/



마지막문제2. 이름을 물어보게 하고 이름을 입력했을 때 해당 사원의 월급이 자기가 속한 부서번호의 평균월급보다 크면 고소득자입니다.” 작으면 저소득자입니다.” 라는 메시지를 출력하시요

ACCEPT p_ename PROMPT '이름을 입력하시오 '

DECLARE
 v_ename emp.ename%TYPE := UPPER('&p_ename');
 v_avg EMP.sal%TYPE;
 v_sal emp.sal%TYPE;

BEGIN
 SELECT ROUND(AVG(sal)) INTO v_avg
 FROM EMP
 WHERE deptno = (SELECT deptno FROM EMP WHERE ename=v_ename);

 SELECT sal INTO v_sal
 FROM EMP
 WHERE ename=v_ename;

 IF v_sal >= v_avg THEN
 dbms_output.put_line('고소득자입니다');
 ELSE
 dbms_output.put_line('저소득자입니다');
 END IF;
END;


/


'빅데이터과정 > PL/SQL ' 카테고리의 다른 글

#9_140625_PL_SQL_CASE 문  (0) 2014.07.14
#9_140625_PL_SQL_LOOP문  (0) 2014.07.14
#9_140625_PL_SQL_진리연산표  (0) 2014.07.14
#9_140625_PL_SQL_변수의 데이터 유형  (0) 2014.07.14
#9_140625_PL_SQL_BIND 변수  (0) 2014.07.14