PL/SQL - 제어문

jsbak·2020년 8월 31일
0

DB

목록 보기
22/35

IF문

  • 다른 응용 프로그램언어의 IF문과 같은 기능
  • 기본IF
IF 조건 THEN
    명령1;
 [ELSE
    명령2;]
  END IF;
  • 나열식 IF
 IF 조건1 THEN --나열식 IF
    명령1;
  ELSIF 조건2 THEN
    명령2;
  ELSIF 조건3 THEN
    명령3;
    :
  ELSE 
    명령4;
  END IF;
  • 중첩 IF
  IF 조건1 THEN  -- 중첩 IF
    IF 조건2 THEN
      명령1;
    ELSE
      명령2;
    END IF;
  ELSE
    명령3;
  END IF;

예)임의의 부서코드(10-110)를 하나 생성하여 해당부서에 속한 사원정보를 조회하고
첫 번째 검색된 사원의 급여가 3000미만이면 '낮음임금',3000~6000이면 '중간임금',
그 이상이면 '높은임금'을 출력하시오.
출력할 데이터는 사원명, 부서명, 급여, 비고이다.

declare
 v_name employees.emp_name%type;
 v_dept_name departments.department_name%type;
 v_sal employees.salary%type;
 v_remarks varchar2(50);
 v_dept_id departments.department_id%type;
begin
 v_dept_id := ROUND(dbms_random.value(10,110),-1);
 --dbms.random.value(난수를 발생시킬 시작값, 발생할 난수의 끝값)
 --DBMS_RANDOM.VALUE()DBMS에서 제공하는 난수제공함수
 select a.emp_name, b.department_name, a.salary
        into v_name, v_dept_name, v_sal
        --변수에 넘겨주기 위해 INTO를 씀
   from employees a, departments b
  where a.department_id = b.department_id
    and a.department_id = v_dept_id
    and rownum=1;
 if v_sal between 1 and 2999 then
    v_remarks:='낮음임금';
 elsif v_sal between 3000 and 6000 then
    v_remarks:='보통임금';
 else
    v_remarks:='높은임금';
 end if;
 dbms_output.put_line(v_name||', '||v_dept_name||', '||v_sal||'=>'||v_remarks);
end;

profile
끄적끄적 쓰는곳

0개의 댓글