RDBMS/Oracle
[PL/SQL] 제어문(조건문, 반복문)
워터파슬리
2023. 4. 21. 13:54
728x90
반응형
1. 조건문
- IF
- CASE
DECLARE
person emp%ROWTYPE;
BEGIN
SELECT *
INTO person
FROM emp
WHERE yyyy = ‘2022’
AND dept_code = ‘04001000’
AND name = ‘에이다 러블레이스‘
;
—-IF조건문
IF person.name = ‘에이다 러블레이스’;
THEN dbms_output.put_line(‘세계 최초의 프로그래머입니다.’);
ELSIF person.name = ‘제임스 고슬링’;
THEN dbms_output.put_line(‘최초로 JAVA를 개발하였습니다.’);
ELSE
dbms_output.put_line(‘정보가 없습니다.’);
END IF;
—-단순CASE조건문
CASE person.name
WHEN ‘에이다 러블레이스‘ THEN dbms_output.put_line(‘세계 최초의 프로그래머입니다.’);
WHEN ‘제임스 고슬링‘ THEN dbms_output.put_line(‘최초로 JAVA를 개발하였습니다.’);
ELSE
dbms_output.put_line(‘정보가 없습니다.’);
END CASE;
—-검색CASE조건문
CASE
WHEN person.salary < 3000000 THEN dbms_output.put_line(‘기본급이 300만원 미만입니다.’);
ELSE
dbms_output.put_line(‘기본급이 300만원 이상입니다.’);
END CASE;
2. 반복문
- LOOP: 기본 반복문
- WHILE LOOP: 특정 조건식의 결과를 통해 반복 수행
- FOR LOOP: 반복 횟수를 정하여 반복 수행
- CURSOR FOR LOOP: 커서를 활용한 반복 수행
*반복 수행을 중단 시키거나 특정 반복 주기를 건너뛰는 명령어
- EXIT: 수행 중인 반복 종료
- EXIT WHEN: 반복 종료를 위한 조건식을 지정하고 만족하면 반복 종료
- CONTINUE: 수행 중인 반복의 현재 주기를 건너뜀
- CONTINUE WHEN: 특정 조건힉을 지정하고 조건식을 만족하면 현재 반복 주기를 건너뜀
DECLARE
num NUMBER(10) DEFAULT 1;
total NUMBER(10) DEFAULT 0;
v_emp emp%ROWTYPE;
CURSOR c_emp IS
SELECT *
INTO v_emp
FROM emp
WHERE yyyy = ‘2022’
AND dept_code = 04001000’
;
BEGIN
—-기본LOOP(1부터 10까지 합산값 구하기)
LOOP
total := total + num;
num := num + 1;
IF num > 10 THEN EXIT;
END IF;
END LOOP;
total := 0;
num := 1;
—-WHILE LOOP
—-반복 수행 전에 조건식을 검사하기 때문에 조건식 결과 값에 따라 단 한 번도 반복 수행 되지 않을 수도 있음!
WHILE num < 11 LOOP
total := total + num;
num := num + 1;
END LOOP;
total := 0;
—-FOR LOOP
FOR i IN 1..10 LOOP
total := total + i;
CONTINUE WHEN MOD(i, 2) = 0;
dbms_output.put_line(‘i: ‘||i);
END LOOP;
—-CURSOR FOR LOOP(커서 출력)
FOR i IN c_emp LOOP
dbms_output.put_line(‘이름: ‘||i.name||’, 기본급: ’||i.salary);
END LOOP;
END
;
728x90
반응형