Web develop/SQL

[SQL/ORACLE] PL/SQL 조건문 형식 및 사용예제 (if문, if~else문, if~elif~else문)

ForA 2019. 6. 15. 20:52
728x90

if문

    if (조건식) --소괄호 생략가능
        then  -- 시작을 표현
            조건식이 참일 때 실행할 문장;
    end if; -- 끝을 표현
    declare
        su1 number;
        su2 number := 20;
    begin
        su1 := 23;

        if(su1>su2)
            then dbms_output.put_line('작다!!');
        end if;

        if(su1<su2)
            then dbms_output.put_line('크다!!');
        end if;
    end;
    /
  • su1 := 13; —> := 대입연산자

if~else문

    if 조건식 
        then 조건식 결과가 참일 때 실행할 문장;
        else 조건식 결과가 거짓일 때 실행할 문장;
    end if;

    --
    declare 
        c emp.comm%type;
        vename emp.ename%type;
        begin
            SELECT comm,ename INTO c,vename
            FROM emp WHERE empno = 7788;
            if(c NOT IN(0,null))
                then dbms_output.put_line(vename||'은 커미션 '||c||'을 받습니다');
                else dbms_output.put_line(vename||'은 커미션을 받지않습니다');
            end if;
        end;
    /

    declare 
        vcomm  emp.comm%type;
        vename emp.ename%type;
        vempno emp.empno%type;
        vsal       emp.sal%type;
        begin
            SELECT comm,ename,empno,sal INTO vcomm,vename,vempno,vsal
            FROM emp WHERE empno = 7788;
            if(vcomm NOT IN(0,null))
                then dbms_output.put_line(vename||'은 연봉 '|| vsal*12+vcomm ||'을 받습니다');
                else dbms_output.put_line(vename||'은 연봉 '|| vsal*12 ||'을 받습니다');
            end if;
        end;
    /

if~elsif~else문

if (조건식1)  
    then 조건식1 참일때 실행할 문장;  
    elsif (조건식2)  
        then 조건식1이 거짓이고 2가 참일때 실행할 문장;  
    elsif (조건식3)  
        then 조건식1,2가 거짓이고 3이 참일때 실행할 문장;  
    else 조건식 1,2,3이 거짓일때 실행할 문장;  
end if;

--
declare
    vename  emp.ename%type;
    vdeptno emp.deptno%type;
    vempno  emp.empno%type;
    vdname  dept.dname%type;
    begin
        vempno := 7654;
        SELECT ename, deptno INTO vename, vdeptno
        FROM emp WHERE empno=vempno;
    if(vdeptno = 10) 
        then vdname := 'ACCOUNTING';
    elsif(vdeptno = 20) 
        then vdname := 'RESEARCH';
    elsif(vdeptno = 30)
        then vdname := 'SALES';
    else vdname := 'OPERATIONS';
    end if;
    dbms_output.put_line(vempno||' 사번의 '||vename||' 사원은 '||vdname||' 부서에서 일한다.');
end;
/