다른 언어의 기본적인 문법 중 반복문 역시 사용 가능하다.
LOOP, WHILE, FORLOOP 가 있다.
차이점은 따로 없으며 예제를 통해 간단히 확인하자
LOOP
SET SERVEROUTPUT ON; -- LOOP문은 빠져나갈 조건이 만족 될 때까지 반복된다. DECLARE i NUMBER(1) := 0; BEGIN LOOP i := i + 1; DBMS_OUTPUT.PUT_LINE(i); EXIT WHEN i > 5; END LOOP; END; / -- dept에 있는 데이터를 하나씩 불러온다. (전체 5개)) SELECT deptno, deptname, loc FROM dept WHERE deptno = 1; DECLARE i NUMBER(1) := 0; v_val dept%ROWTYPE; BEGIN LOOP i := i + 1; SELECT deptno, deptname, loc INTO v_val.deptno, v_val.deptname, v_val.loc FROM dept WHERE deptno = i; DBMS_OUTPUT.PUT_LINE(v_val.deptno||'/'||v_val.deptname||'/'||v_val.loc); EXIT WHEN i > 4; END LOOP; END; /
WHILE
-- WHILE 문, 브레이크를 하나 더 만들어 주는 것. DECLARE i NUMBER(1) := 0; v_val dept%ROWTYPE; BEGIN WHILE i <= 5 LOOP i := i + 1; SELECT deptno, deptname, loc INTO v_val.deptno, v_val.deptname, v_val.loc FROM dept WHERE deptno = i; DBMS_OUTPUT.PUT_LINE(v_val.deptno||'/'||v_val.deptname||'/'||v_val.loc); EXIT WHEN i >= 5; END LOOP; END; /
FOR LOOP
FOR문은 향상된 FOR문처럼 데이터를 가져오는데
DB의 데이터를 반복문을 통해 한번에 가져올 때 씀
SET SERVEROUTPUT ON; -- for loop은 JAVA의 향상된 FOR문과 비슷하다 -- 덩어리에서 하나씩 쪼개어 변수에 담는다. -- FOR[변수] IN [덩어리] -- 숫자를 통해 반복 DECLARE BEGIN FOR i IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE(i); END LOOP; END; / -- 반복으로 찾을 SELECT항목 SELECT ename, hiredate FROM emp WHERE hiredate > TO_DATE('15/01/02') ORDER BY hiredate; -- SELECT 항목으로 반복으로 찾을 데이터 DECLARE BEGIN FOR emp_list IN (SELECT ename, hiredate FROM emp WHERE hiredate > TO_DATE('15/01/02') ORDER BY hiredate) LOOP DBMS_OUTPUT.PUT_LINE('사원이름 : '||emp_list.ename); DBMS_OUTPUT.PUT_LINE('입사일 : '||emp_list.hiredate); END LOOP; END; /
'Oracle DB 11g > 03.PL SQL' 카테고리의 다른 글
[DB]03-09.Oracle DB PLSQL 트리거, TRIGGER, :NEW (0) | 2018.10.11 |
---|---|
[DB]03-08.Oracle DB PLSQL 커서, CURSOR (0) | 2018.10.11 |
[DB]03-06.Oracle DB PLSQL IF문, 만들어 둔 프로시저 소스 확인 (0) | 2018.10.10 |
[DB]03-05.Oracle DB PLSQL Procedure(Insert, Update, Delete 예제) (0) | 2018.10.10 |
[DB]03-04.Oracle DB PLSQL Function (0) | 2018.10.10 |