PL/pgSQL에서 제공하는 조건문에 대해 살펴보겠습니다. 조건문은 어떤 조건에 대해 실행할 코드를 분리하기 위한 목적으로 사용됩니다.
PL/pgSQL에서 제공하는 조건문은 IF 문과 CASE 문으로 크게 구분할 수 있습니다. 먼저 IF 문에 대해 살펴보겠습니다.
IF 문의 문법은 아래와 같습니다.
IF <조건> THEN
<참의 실행 코드>
ELSE
<거짓의 실행 코드>
END IF;
만약 <조건>이 부합되는 거짓(false)이 아닌 참(true)일 경우 <참의 실행 코드>를 실행하고, <조건>이 거짓일 경우<거짓의 실행 코드>를 실행합니다. 조건에 대한 실행 코드는 1줄 이상으로 구성할 수 있습니다.
일단 간단한 코드를 통해 ELSE 구문이 없는 IF문의 예를 살펴보겠습니다.
DO $$
DECLARE
a integer := 20;
b integer := 40;
c integer := 20;
BEGIN
IF a > b THEN
RAISE NOTICE 'a가 b보다 더 큽니다.';
END IF;
IF a < b THEN
RAISE NOTICE 'a가 b보다 더 작습니다.';
END IF;
IF a = b THEN
RAISE NOTICE 'a와 b가 동일합니다.';
END IF;
IF a >= c THEN
RAISE NOTICE 'a가 c보다 크거나 같습니다.';
END IF;
IF a != b THEN
RAISE NOTICE 'a와 b가 같지 않습니다.;
END IF;
IF a != b AND a = c THEN
RAISE NOTICE 'a와 b가 같지 않고 a와 c가 같습니다.';
END IF;
IF a = b OR a = c THEN
RAISE NOTICE 'a와 b가 같거나 a와 c가 같습니다.';
END IF;
IF NOT (a=b OR a=c) THEN
RAISE NOTICE 'a와 b가 같지 않고 a와 c도 같지 않습니다.';
END IF;
END $$;
변수 a, b, c 를 각각 20, 40, 20 으로 초기화하고, 각 값에 대해 IF 문을 통해 비교하고 있습니다. 먼저 7번 IF 문은 a가 b보다 크다 라는 조건에 부합하지 않으므로 8번 코드를 실행하지 않습니다. 비교 연산은 크다, 작다, 같거나 크다, 같거나 작다, 같지 않다, 같다 에 대해 각각 >,< >=, <=, !=, = 입니다. 조건에 대해 AND와 OR 그리고 NOT으로 묶어 조합할 수 있습니다.
IF a != b AND a=c THEN 의 IF 문은 a와 b가 같지 않고(AND) a와 c가 같은가라는 조건으로 참이므로 그다음 코드가 실행됩니다.
IF a =b OR a =c THEN RAISE NOTICE 'a와 b가 같거나 a와 c가 같습니다.'의 조건으로는 거짓이기 때문에 밑에 조건문이 실행되지 않습니다.
ELSE 구문까지 포함한 IF 문의 예를 보면 아래와 같습니다.
DO $$
DECLARE
a integer := 20;
b integer := 40;
BEGIN
IF a > b THEN
RAISE NOTICE 'a가 b보다 더 큽니다.';
ELSE
RAISE NOTICE 'a가 b보다 더 크지 않습니다.';
END IF;
END $$;
IF 문에서 a가 b보다 큰 가에 대한 조건이 거짓(false)이므로 ELSE문 다음의 실행 되므로 그 결과는 다음과 같습니다.
IF 문에 대한 마지막 예로 다음 코드를 살펴보겠습니다.
DO $$
DECLARE
a integer := 20;
b integer := 40;
BEGIN
IF a > b THEN
RAISE NOTICE 'a가 b보다 더 큽니다.;
ELSEIF a = b THEN
RAISE NOTICE 'a와 b가 같습니다.';
ELSE
RAISE NOTICE 'a와 b가 같지 않고, a가 b보다 더 크지도 않습니다.;
END IF;
END $$;
ELSEIF 문을 사용하고 있는데요. 만약 첫번째 IF 문에 대한 조건이 거짓이면 다음의 ELSEIF 문의 조건을 검사하게 됩니다.
그런데 이 ELSEIF 문 역시 거짓이라면 다음 ELSEIF 문을 검사하게 되고, 최종적으로 어떠한 조건도 만족하지 않는다면 ELSE 문의 코드가 실행되게 됩니다. 위의 코드의 실행 결과는 아래와 같습니다.
'Be Smart > SQL' 카테고리의 다른 글
[SQL] 3개의 테이블 조인하는 방법 (0) | 2021.10.19 |
---|---|
[SQL] 해당 컬럼에 숫자, 한글, 특수문자 있는지 조회하는 방법 (0) | 2021.10.18 |
PostgreSQL 튜토리얼 , 변수와 상수 (0) | 2021.10.13 |
PostgreSQL 튜토리얼 , 함수 인자 (0) | 2021.10.13 |
PostgreSQL 튜토리얼 , 사용자 정의 함수 (0) | 2021.10.13 |
댓글