DB /day21 / 23.09.20(수) / (핀테크) Spring 및 Ai 기반 핀테크 프로젝트 구축

허니몬·2023년 9월 20일
post-thumbnail

13_PL_SQL_2.SQL

-- 13_PL_SQL_2.SQL
SET SERVEROUTPUT ON;

-- DAY07
/*
# BASIC LOOP
- 조건 없이 반복 작업 실행
LOOP
    STATEMENT;
    ......
    EXIT;
END LOOP;
*/


-- 1 ~ 5 까지 출력
/
DECLARE
    NO NUMBER :=1;
BEGIN
    LOOP
        DBMS_OUTPUT.PUT_LINE(NO);
        NO := NO +1;
        IF NO > 5 THEN 
            EXIT;
        END IF;
    END LOOP;
END;
/

/*
# FOR LOOP / 주의 사항 (..) 2번
FOR INDEX IN 시작값..종료값 LOOP
    STATEMENT;
END LOOP;
>> INDEX는 자동 선언되는 BINARY_INTEGER 형 변수. 1씩 증가
*/

-- 1 ~ 5 까지 출력

/
DECLARE
BEGIN
    DBMS_OUTPUT.PUT_LINE('- FOR LOOP -');
    FOR N IN 1..5 LOOP
        DBMS_OUTPUT.PUT_LINE(N);
    END LOOP;
END;
/

/*
# WHILE LOOP

WHILE CONDITION LOOP
    STATEMENT;
    .....
END LOOP;
*/

-- 1 ~ 5 까지 출력
/
DECLARE
    NO NUMBER :=1;
BEGIN
    DBMS_OUTPUT.PUT_LINE('- WHILE LOOP -');
    WHILE NO <= 5 LOOP
    DBMS_OUTPUT.PUT_LINE(NO);
    NO := NO + 1;
    END LOOP;
END;
/

-- # QUIZ
-- EMP 테이블에 사원이름을 적용해서 해당 사원의 연봉을 구하세요
-- 커미션이 없으면 0 으로 설정해서 연봉을 구합니다
SELECT * FROM EMP;
/
DECLARE
    VSAL EMP.SAL%TYPE;
    VENAME EMP.ENAME%TYPE;
    VCOMM EMP.COMM%TYPE;
BEGIN
    SELECT SAL, ENAME, COMM
    INTO VSAL, VENAME, VCOMM
    FROM EMP
    WHERE ENAME = 'SMITH';
    
    DBMS_OUTPUT.PUT_LINE(VENAME || ' 의 연봉 : ' || (VSAL * 12+NVL(VCOMM,0)));
END;
/




-- 구구단 7단의 값을 모두 출력하세요
/
DECLARE
    N7 NUMBER :=7;
    NO NUMBER :=1;
BEGIN
    WHILE NO <=9 LOOP
    DBMS_OUTPUT.PUT_LINE(N7 || ' * ' || NO || ' = ' || (NO*N7));
    NO := NO +1;
    END LOOP;
END;
/

-- FOR LOOP 를 사용해서 부서번호를 생성합니다
-- 이 값을 SELECT 문에 적용해서 부서정보를 모두 출력하세요
-- > 부서번호, 부서명, 지역
SELECT * FROM DEPT;
/
DECLARE
    VDNAME DEPT.DNAME%TYPE;
    VLOC DEPT.LOC%TYPE;
BEGIN
    FOR N IN 1..5 LOOP
    SELECT DNAME, LOC
    INTO VDNAME, VLOC
    FROM DEPT
    WHERE DEPTNO = N*10;
    DBMS_OUTPUT.PUT_LINE('부서번호 : ' || N*10 ||' / 부서명 : ' || VDNAME || ' / 지역 ' || VLOC);
    END LOOP;
END;
/
profile
Fintech

0개의 댓글