참고
2020-08-31-01)PLSQL제어문.sql
2020-08-31-02)PLSQL반복문.sql
2020-08-31-03)PLSQL반복문2.sql
2020-09-01-01)PLSQL반복문3.sql
1. 제어문
1) IF문
사용형식
기본
- IF 조건 THEN
... 명령1;
[ELSE
... 명령2;]
END IF;
나열식 IF
- IF 조건1 THEN
... 명령1;
ELSIF 조건2 THEN
... 명령2;
ELSIF 조건3 THEN
... 명령3;
ELSE
... 명령4;
END IF;
중첩식 IF
- IF 조건1 THEN
..... IF 조건2 THEN
........... 명령1;
..... ELSE
........... 명령2;
..... END IF;
ELSE
... 명령3;
END IF;
예시
임의의 부서코드(10-110)를 하나 생성하여 해당부서에 속한 사원정보를 조회하고 첫번째 검색된 사원의 급여가 3000미만이면 '낮은임금', 3000~6000이면 '중간임금', 그 이상이면 '높은임금'을 비고에 출력하시오.
- Alias: 사원명, 부서코드 부서명, 급여, 비고
- ROWNUM 해줘야 첫번째 검색된 사원만 나옴.
2. 반복문
- PL/SQL의 반복문에는 LOOP, WHILE, FOR문이 제공
1) LOOP문
사용형식
- LOOP
... 반복처리문;
... EXIT WHEN 조건; (생략되면 무한루프)
END LOOP;
- 조건이 참(TRUE)이면 반복을 벗어남
예시
1. 구구단의 단을 입력받아 해당 구구단을 출력하쇼
2. 1~50사이의 FIBONACCI NUMBER를 구하라
- 피보나치수열 ♥ 서치 알고리즘
3. 회원테이블에서 마일리지가 4000이상인 회원의 이름, 직업, 마일리지를 구하는 커서를 생성하고 커서결과를 처리할때 성별을 구별하여 '여성회원', '남성회원'을 출력하시오
2) WHILE문
- 다른 애플리케이션 개발언어의 WHILE문과 같은 기능 제공
사용형식
- WHILE 조건
... LOOP
........ 반복처리문;
END LOOP;
- '조건'이 참(TRUE)이면 반복 수행하고 거짓(FALSE)이면 반복문을 벗어남
예시
1. 구구단 7단 출력
2. 사원테이블에서 부서코드 50번인 부서의 사원명,부서명,직책명을 추출하는 커서를 생성하고 사원수를 출력하는 PL/SQL을 작성
- ...
3) FOR문
사용형식
- 인덱스는 시스템에서 제공 (선언하지 않아도됨)
참고
- '..': 필수
- REVERSE: 최종값 부터 초기값까지. 값의 자리는 그대로
예시
1. 구구단 7단 출력
2. 구구단 7단 역으로 출력
4) CURSOR를 사용하는 FOR문
사용형식
- 서브쿼리 : 커서역할을 sql
- 커서의 OPEN, FETCH, CLOSE 문을 생략
- 커서의 컬럼명은 '레코드명.컬럼명'으로 참조 -> 변수사용 필요 없음
- 레코드명은 시스템에서 제공 (선언이 불필요함)
예시
1. 키보드로 직업을 입력 받아 해당 직업을 가진 회원의 이름, 직업, 마일리지를 출력하는 커서를 for문을 이용하여 작성
레코드: 커서가 가지고 있는 한 줄을 통째로 보관할 방
5) 인라인 FOR문 - 커서 포함
- 커서 따로 선언하지 않고, 커서에 해당하는 서브쿼리를 FOR문안에 포함시키는 것
- 가장 많이 사용되는 형식 ★
4-1.같은 예시