728x90
반응형

IF ~ ELSIF~ ELSE조건문


SYNTAX
IF 조건1 condition1 THEN
    실행문1(statement1) ;
[ ELSIF 조건2 THEN
    실행문2 ;
ELSE
    실행문3 ; 
END IF;
DECLARE 
    vnum1 NUMBER :=1;
    vnum2 NUMBER :=2;
BEGIN
    IF vnum1 >= vnum2 THEN
        DBMS_OUTPUT.PUT_LINE(vnum1||'이(가)'||vnum2||'보다 큰 수 입니다.');
    ELSE
        DBMS_OUTPUT.PUT_LINE(vnum2||'이(가)'||vnum1||'보다 큰 수 입니다.');
    END IF;
END;

2이(가)1보다 큰 수 입니다.
IF ~ ELSIF~ ELSE조건문
DECLARE
    V_SAL NUMBER :=0;
    V_DEPTNO NUMBER :=0;
BEGIN
    V_DEPTNO := ROUND(DBMS_RANDOM.VALUE(10,30),-1);
    --10~30사이 랜덤
    --DBMS_OUTPUT.PUT_LINE(DBMS_RANDOM.VALUE(10,30));
    SELECT MAX(SAL) AS SAL INTO V_SAL FROM EMP
    WHERE DEPTNO = V_DEPTNO;
    
    DBMS_OUTPUT.PUT_LINE('연봉'||V_SAL);
    
    IF V_SAL BETWEEN 1 AND 1000 THEN
            DBMS_OUTPUT.PUT_LINE ('낮음');
    ELSIF V_SAL BETWEEN 1001 AND 2000 THEN
            DBMS_OUTPUT.PUT_LINE ('중간');
    ELSIF V_SAL BETWEEN 2001 AND 3000 THEN
            DBMS_OUTPUT.PUT_LINE ('높음');
    ELSE
            DBMS_OUTPUT.PUT_LINE ('최상위');
    END IF;
END;​
연봉2850
높음​
CASE ~ WHEN
--ORACLE에서의 BOOLEAN자료형
--값 : TRUE, FALSE, NULL값을 가질 수 있다. (대소문자 섞어 사용 가능)
--다른 자료형은 DBMS_OUTPUT의 출력문을 통해 출력가능하지만, 
--BOOLEAN자료형 값은 DBMS_OUTPUT의 출력문으로 바로 값을 출력할 수 없다.(오류)

DECLARE
    v_pi INTEGER;
    v_vc VARCHAR2(10);
    v_order BOOLEAN;
BEGIN
    DBMS_OUTPUT.PUT_LINE('V_PI = ' ||V_PI);
    DBMS_OUTPUT.PUT_LINE('V_VC = ' ||V_VC);
    v_order := TRUE ; --에러:v_order := 'TRUE';
    --에러 DBMS_OUTPUT.PUT_LINE(v_order);
    DBMS_OUTPUT.PUT_LINE('BAL = ' ||
    case
    when v_order = true then 'True'
    when v_order = FALSE THEN 'False'
    else 'NULL'
    end
    );
END;​
V_PI = 
V_VC = 
BAL = True​

 

728x90
반응형

+ Recent posts