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 |