SQL/연습문제 풀이

[SQL] 다중 IF..THEN..ELSIF..ELSE / WHILE / SELECT

연정양 2023. 1. 17.

--문제1. 다음의 메세지를 출력하시오.
--SQL 응용
--ㅇㅇㅇ

--문제2. 
--SELECT문으로 EMP테이블에서 
--TURNER의 사원번호, 이름, 부서번호 조회
SET SERVEROUTPUT ON;
DECLARE
    SONNO EMP.EMPNO%TYPE;
    SONNAME EMP.ENAME%TYPE;
    SONDEPTNO EMP.DEPTNO%TYPE;
BEGIN
    SELECT EMPNO, ENAME, DEPTNO INTO SONNO, SONNAME, SONDEPTNO
    FROM EMP
    WHERE ENAME = 'TURNER';
    DBMS_OUTPUT.PUT_LINE('사원번호 이름 부서번호');
    DBMS_OUTPUT.PUT_LINE('-------------------------');
    DBMS_OUTPUT.PUT_LINE(''||SONNO||''||SONNAME||''||SONDEPTNO);
END;
/

--문제3. 
--다중IF..THEN..ELSIF..ELSE문을 이용하여 
--TURNER의 사원번호, 이름, 부서번호, 부서명 조회
SET SERVEROUTPUT ON;

DECLARE
    SONEMP EMP%ROWTYPE;
    SONSNAME VARCHAR2(14);
BEGIN
    SELECT * INTO SONEMP
    FROM EMP
    WHERE ENAME = 'TURNER';
    IF(SONEMP.DEPTNO = 10) THEN
    SONSNAME := 'ACCOUNTING';
    ELSIF(SONEMP.DEPTNO = 20) THEN
        SONSNAME := 'CLERK';
    ELSIF(SONEMP.DEPTNO = 30) THEN
        SONSNAME := 'SALES';
    ELSIF(SONEMP.DEPTNO = 40) THEN
        SONSNAME := 'OPERATIONS';
    END IF;
    DBMS_OUTPUT.PUT_LINE('사원번호 이름 부서번호 부서명');
    DBMS_OUTPUT.PUT_LINE('-------------------------------');
    DBMS_OUTPUT.PUT_LINE(''||SONEMP.EMPNO||''||SONEMP.ENAME||''||SONEMP.DEPTNO||''||SONSNAME);
END;
/

--문제4.
--WHILE문을 사용하여 1부터 200까지 합을 구하기
SET SERVEROUTPUT ON;
DECLARE
    NUM NUMBER := 0;
    N_SUM NUMBER := 0; 
BEGIN
    WHILE (NUM < 200) LOOP
        NUM := NUM + 1;
        N_SUM := N_SUM + NUM;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('1부터 200까지의 합');
    DBMS_OUTPUT.PUT_LINE('****************');
    DBMS_OUTPUT.PUT_LINE(N_SUM);
END;
/

댓글