IF / AND는 너무 잘 알고 있을 것이다. 진리식으로 나타내면 충분하겠지?
X | Y | IF | AND |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 |
아니 표는 가운데 정렬안됨? 후..<center></center> 태그님 영원하세요
먼저 IF문을 살펴보자.
IF condition THEN
statements;
END IF;
boolean type는 언제나 true, false, null 값만을 갖는다. 이 점을 이용하여 사용한다.
DECLARE
n_sales NUMBER;
BEGIN
n_sales := 200000;
IF n_sales > 100000 THEN
DBMS_OUTPUT.PUT_LINE( 'Sales revenue is greater than 100K' );
END IF;
END;
간단하게 작성해보자. n_sales 라는 애는 100000을 넘으면 text를 출력한다. 여기서는 임의로 값을 넣어서 진짜 그렇게 되는지 확인해보았다.
이런 경우를 나타낼 수도 있다.
DECLARE
b_profitable BOOLEAN;
n_sales NUMBER;
n_costs NUMBER;
BEGIN
b_profitable := n_sales > n_costs;
IF n_sales > n_costs THEN
b_profitable;
END IF;
END;
보면 b_profitable이 boolean 형식으로 선언되었다. 그리고 if문의 조건을 보면 n_sales > n_costs 인 것을 알 수 있다. 여기서 나오는 결과값은 boolean이기 때문에 마찬가지로 b_profitable의 값으로 사용할 수 있다. 따라서 이렇게 바꿀 수 있다는 것이다.
DECLARE
b_profitable BOOLEAN;
n_sales NUMBER;
n_costs NUMBER;
BEGIN
b_profitable := n_sales > n_costs;
IF b_profitable THEN
DBMS_OUTPUT.PUT_LINE('TEST');
END IF;
END;
이걸 출력해보면 이렇게 된다.
DECLARE
b_profitable BOOLEAN;
n_sales NUMBER;
n_costs NUMBER;
BEGIN
n_sales := 150;
n_costs := 120;
b_profitable := n_sales > n_costs;
IF b_profitable THEN
DBMS_OUTPUT.PUT_LINE('TEST');
END IF;
END;
-- TEST
BOOLEAN은 언제나 TRUE, FALSE, NULL만 가지고 있기 때문에 다음과 같이 만들 필요는 없다.
IF b_profitable = TRUE THEN
DBMS_OUTPUT.PUT_LINE('This sales deal is profitable');
END IF;
이렇게만 작성하면 되는 것이다.
IF b_profitable THEN
DBMS_OUTPUT.PUT_LINE('This sales deal is profitable');
END IF;
IF문을 배웠으면 무엇이 나올까? 진부하게도 ELSE이다.
IF condition THEN
statements;
ELSE
else_statements;
END IF;
이렇게 사용한다.
DECLARE
n_sales NUMBER;
BEGIN
n_sales := 10000;
IF n_sales > 200000 THEN
n_sales := n_sales * 0.9;
DBMS_OUTPUT.PUT_LINE(n_sales);
ELSE
n_sales := n_sales * 0.95;
DBMS_OUTPUT.PUT_LINE(n_sales);
END IF;
END;
당연하게도 여러 조건을 넣을 수 있다.
IF condition_1 THEN
statements_1
ELSIF condition_2 THEN
statements_2
[ ELSIF condition_3 THEN
statements_3
]
...
[ ELSE
else_statements
]
END IF;
너무 당연하게도 중첩도 할 수 있다.
IF condition_1 THEN
IF condition_2 THEN
nested_if_statements;
END IF;
ELSE
else_statements;
END IF;
'Database > PL SQL' 카테고리의 다른 글
PL/SQL Tutorial - LOOP (0) | 2019.05.08 |
---|---|
PL/SQL Tutorial - NULL (0) | 2019.05.07 |
PL/SQL Tutorial - GOTO (0) | 2019.05.07 |
PL/SQL Tutorial - CASE (0) | 2019.04.30 |
PL/SQL Tutorial - Type, Variables (0) | 2019.04.30 |