천재 블로그

[PL/SQL] IF문 본문

프로그래밍/Oracle

[PL/SQL] IF문

Dondons 2019. 6. 21. 14:10



IF문


IF 조건1 THEN 처리 1

[ELSE 조건2 THEN 처리2

.....

ELSIF 조건n THEN 처리n]

[ELSE 처리]

END IF;




예제



IF만 사용

1
2
3
4
5
6
7
DECLARE
  i NUMBER := 0;
BEGIN
  IF i = 0 THEN DBMS_OUTPUT.PUT_LINE('i는 0입니다.');
  END IF;
END;
/


i는 0입니다.


IF, ELSIF 사용

1
2
3
4
5
6
7
8
9
10
DECLARE
  i NUMBER := 1;
BEGIN
  IF i = 0 
  THEN DBMS_OUTPUT.PUT_LINE('i는 0입니다.');
  ELSIF i = 1 
  THEN DBMS_OUTPUT.PUT_LINE('i는 1입니다.');
  END IF;
END;
/


i는 1입니다.



IF, ELSIF, ELSE 사용

1
2
3
4
5
6
7
8
9
10
11
12
DECLARE
  i NUMBER := 2;
BEGIN
  IF i = 0 
  THEN DBMS_OUTPUT.PUT_LINE('i는 0입니다.');
  ELSIF i = 1 
  THEN DBMS_OUTPUT.PUT_LINE('i는 1입니다.');
  ELSE
  DBMS_OUTPUT.PUT_LINE('i는 0도 1도 아닙니다.');
  END IF;
END;
/
1

i는 0도 1도 아닙니다.



조건절에 사용가능한 비교연산자




연산자

의미 

 왼쪽과 오른쪽의 값이 같다

 <>, !=, ^=

 왼쪽과 오른쪽의 값이 같지 않다

 <

 왼쪽값이 오른쪽 값보다 작다

 >

 왼쪽값이 오른쪽 값보다 크다

 <=

 왼쪽값은 오른쪽값보다 작거나 같다 

 >=

 왼쪽값은 오른쪽값보다 크거나 같다

 [NOT] BETWEEN ~ AND ~

 왼쪽값은 지정한값의 범위내에 포함되어 있다 

 [포함 되어있지 않다]

 [NOT] IN ( 값 리스트 )

 왼쪽값은 값의 리스트에 포함되어 있다 

 [포함되어 있지 않다]

 [NOT] LIKE '패턴'

 왼쪽값이 패턴안에 포함되어있다 

 [포함되어 있지 않다]

 IS [NOT] NULL

 왼쪽값은 NULL이다 [아니다] 



1
2
3
4
5
6
7
8
9
10
11
12
DECLARE
  i NUMBER := 6;
BEGIN
  IF i BETWEEN 1 AND 5 THEN
    DBMS_OUTPUT.PUT_LINE('i는 1이상 5이하입니다.');
  ELSIF i IN (678) THEN
    DBMS_OUTPUT.PUT_LINE('i는 6, 7, 8중 하나입니다.');
  ELSE
    DBMS_OUTPUT.PUT_LINE('i에 해당하는 수가 없습니다.');
  END IF;
END;
/




1
2
3
4
5
6
7
8
9
10
11
12
DECLARE
  s VARCHAR2(30) := '가나다라';
BEGIN
  IF s IS NULL THEN
    DBMS_OUTPUT.PUT_LINE('iはNULLです');
  ELSIF s LIKE '가%' THEN
    DBMS_OUTPUT.PUT_LINE('s는 "가"로 시작합니다.');
  ELSE
    DBMS_OUTPUT.PUT_LINE('s는 "가"로 시작하지 않습니다.');
  END IF;
END;
/






논리연산과 복수 조건



조건절에는 AND, OR, NOT과 같은 논리연산자도 사용이 가능합니다.


1
2
3
4
5
6
7
8
9
10
11
12
DECLARE
  i NUMBER := &val;
BEGIN
  IF i < 5 AND MOD(i, 2= 0 THEN
    DBMS_OUTPUT.PUT_LINE('5보다 작은 짝수');
  ELSIF i < 5 OR MOD(i, 2= 0 THEN
    DBMS_OUTPUT.PUT_LINE('5보다 작거나 짝수');
  ELSE
    DBMS_OUTPUT.PUT_LINE('5이상의 홀수');
  END IF;
END;
/



&val은 SQL*PLUS의 치환문자입니다. 사용자로부터 입력받을 수 있습니다.

4를 입력했을 경우 5보다 작은 짝수라고 출력됩니다.

3을 입력했을 경우 5보다 작거나 짝수라고 출력이 됩니다.


4일 경우에는 i < 5 AND MOD(i, 2) = 0에서 5보다 작기때문에 TRUE, 2를나눈 나머지값이 0이기 때문에 TRUE, AND절에서 TRUE, TRUE는 TRUE를 반환하기 때문에 첫번째IF 절에 해당하게 됩니다.

3일 경우에는 i < 5 OR MOD(i,2) = 0에서 5보다 작기때문에 TRUE, 2를 나눈 나머지값은 1이기 때문에 FALSE, OR절에서는 TRUE, FALSE일때 TRUE를 반환합니다. 그래서 두번째 ELSIF절에 해당합니다.


아래의 NOT, AND, OR의 논리 연산표를 참고하세요.




NOT, AND, OR의 논리 연산표




NOT논리 연산표


 

 TRUE

FALSE

NULL 

NOT 

FALSE 

TRUE 

NULL 




AND논리 연산표


 AND

 TRUE

FALSE 

NULL 

TRUE

FALSE 

FALSE 

NULL 

FALSE

FALSE

FALSE 

FALSE 

NULL 

NULL 

FALSE

NULL 




OR논리 연산표


OR

TRUE 

FALSE 

NULL 

TRUE

TRUE

TRUE 

TRUE 

FALSE

TRUE 

FALSE 

NULL 

NULL

TRUE

NULL 

NULL 






Comments