Oracle - PL/SQL 제어문, 반복문

갓김치·2020년 8월 31일
0

Oracle

목록 보기
28/33
post-thumbnail

참고

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문과 같은 기능

사용형식

기본

  • 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 해줘야 첫번째 검색된 사원만 나옴.
    • 변수가 1개여서 1번만 저장할 수 있다

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문

  • 다른 애플리케이션 개발언어의 FOR문의 역할

사용형식

  • 인덱스는 시스템에서 제공 (선언하지 않아도됨)

참고

  • '..': 필수
  • REVERSE: 최종값 부터 초기값까지. 값의 자리는 그대로

예시

1. 구구단 7단 출력

2. 구구단 7단 역으로 출력

4) CURSOR를 사용하는 FOR문

사용형식

  • 서브쿼리 : 커서역할을 sql
  • 커서의 OPEN, FETCH, CLOSE 문을 생략
  • 커서의 컬럼명은 '레코드명.컬럼명'으로 참조 -> 변수사용 필요 없음
  • 레코드명은 시스템에서 제공 (선언이 불필요함)

예시

1. 키보드로 직업을 입력 받아 해당 직업을 가진 회원의 이름, 직업, 마일리지를 출력하는 커서를 for문을 이용하여 작성

  • 레코드: 커서가 가지고 있는 한 줄을 통째로 보관할 방

5) 인라인 FOR문 - 커서 포함

  • 커서 따로 선언하지 않고, 커서에 해당하는 서브쿼리를 FOR문안에 포함시키는 것
  • 가장 많이 사용되는 형식 ★

4-1.같은 예시

profile
갈 길이 멀다

0개의 댓글