FOR문FOR문도 다른 프로그래밍 언어에서 사용하는 것과 비슷한 형태이다. 오라클에서 제공하는 FOR문의 기본 유형은 다음과 같다.
인덱스는 초깃값에서 시작해 최종값까지 루프를 돌며 1씩 증가되는데, 인덱스는 참조는 가능하지만 변경할 수는 없고 참조도 오직 루프 안에서만 가능하다. 그리고 REVERSE를 명시하면 순서가 거꾸로 된다. 즉 최종값부터 시작해 최솟값에 이르기까지 감소하면서 루프를 돈다. 구구단 3단을 출력하는 익명 블록을 FOR문으로 변경해 보자. 입력
FOR 루프에서 사용하는 인덱스는 선언부에서 선언하지 않고 사용했음을 유념하자. 이번에는 REVERSE를 사용해 순서를 바꿔 보자. 입력
결과
지금까지 기본 형태의 FOR문을 살펴봤는데, 커서와 함께 FOR문을 사용하면 그 형태가 약간 다르다. 이에 대해서는 커서를 다루는 장에서 설명하겠다. 신간 소식 구독하기 뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요. IF문특정 조건에 따라 처리를 하는 것을 조건문이라 하는데 그 대표적인 것이 바로 IF 문이며 그 구조는 다음과 같다.
IF 다음에 오는 조건 값이 참, 즉 TRUE이면 해당 조건 처리 문장이 실행된다. IF문의 용법은 프로그래밍 언어에 따라 조금씩 차이가 있는데 오라클에서는 조건 다음에는 THEN을, 문장 맨 마지막에는 END IF를 명기해야 한다. 또한 조건이 1개 이상이면 ELSE IF가 아닌 ELSIF를 사용한다. 그럼 두 변수를 선언해 초기화한 뒤 둘 중 큰 수를 출력하는 로직을 IF문을 사용해 구현해 보자. 입력
결과
vn_num2가 vn_num1보다 크므로 ELSE 부분으로 제어가 넘어가 실행된 것을 확인할 수 있다. 이번에는 조건이 여러 개인 IF문을 살펴 보자. 입력
결과
앞의 익명 블록은 7장에서 샘플 데이터를 생성할 때 사용했던 DBMS_RANDOM 패키지를 사용해 10부터 120까지 숫자를 생성한 후 10의 자리(-1)에서 ROUND 처리를 해서 실행할 때마다 무작위로 10, 20, 30, … 120까지 수를 vn_department_id 변수에 할당한다. 이로 인해 이 PL/SQL 블록의 실행 결과는 실행할 때마다 달라질 것이다. 그리고 나서 이 변수 값에 해당하는 부서번호를 가진 사원을 무작위로 1명 선택해 급여를 가져와 vn_salary 변수에 넣어, IF 문을 사용해 범위에 맞게 출력하는 로직이다. 급여가 3000 이하이면 ‘낮음’, 3,001에서 6,000까지는 ‘중간’, 6,001에서 10,000까지는 ‘높음’, 그 이상은 ‘최상위’ 라는 텍스트를 출력하고 있다. 이처럼 여러 조건을 검토해 로직을 처리할 때는 IF~ELSIF~ELSE~END IF 구문을 사용한다. 또한 IF문을 중첩해서 사용할 수도 있다. 중첩할 때는 가장 가까운 IF 조건에 따라 로직이 처리된다. 입력
결과
위 익명 블록은 사원 테이블에서 커미션까지 가져와 커미션이 0보다 클 경우, 다시 조건을 걸어 커미션이 0.15보다 크면 ‘급여*커미션’ 결과를 출력하고, 커미션이 0보다 작으면 급여만 출력하고 있다. 신간 소식 구독하기 뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요. Procedural Language Extention to SQL 의 약자로 오라클 자체에 내장되어있는 절차적언어로서 SQL의 단점을 보완. 출처: https://jyosssss.tistory.com/33 [개미는 뜐뜐] |