천재 블로그
[PL/SQL] IF문 본문
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 (6, 7, 8) 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 |
'프로그래밍 > Oracle' 카테고리의 다른 글
[PL/SQL] COMPOSITE - RECORD 타입 (0) | 2019.06.19 |
---|---|
[PL/SQL] LOB 데이터 타입 (0) | 2019.06.19 |
[PL/SQL] 스칼라형 데이터타입 (0) | 2019.06.19 |
[PL/SQL] 변수의 대입과 초기값의 정의 (0) | 2019.06.18 |
[PL/SQL] 프로그래밍 주의 사항 (0) | 2019.06.18 |