2020/01/13 - [DATABASE/ORACLE] - [PL/SQL] 무작정 시작하기 (1) - PL/SQL 이란?
이전 포스트에서 PL/SQL에 대해서 간략하게 알아보고 예제를 만들어 보았다. 이번 포스트에서는 PL/SQL의 특징 중 하나인 조건문에 대해서 알아보려고 한다. 프로그래밍을 해본 사람이라면 쉽게 이해할 수 있을 것이라고 생각된다.
1. 기본 구조.
1-1. IF ~ ELSIF ~ ELSE ~ END.
1
2
3
4
5
6
7
|
IF 조건식 THEN
[ ELSIF 조건식 THEN ]
ELSE
END IF
|
cs |
- 조건식이 참인 경우 THEN 영역의 작업이 수행됨.
- 다중IF문이 다른 프로그래밍 언어처럼 ELSE IF가 아니라 ELSIF이므로 잘 확인하길 바람.
- ELSE에는 THEN 영역이 없음.
- 조건문 블록이 종료될 때는 END IF라고 명시 해주어야 함.
2. PL/SQL 조건문의 특징.
2-1. CASE ~ WHEN문과 비교해보면 단순히 키워드만 다름.
2-2. 동등비교를 할 때, 등호가 1개만 사용됨.
( O ) IF 1 = 1 THEN
( X ) IF 1 == 1 THEN
2-3. 논리연산자는 기호 대신 AND, OR 키워드 사용.
( O ) IF 1 = 1 AND 2 = 2 THEN
( X ) IF 1 = 1 && 2 = 2 THEN
2-4. 특정값이 포함되어 있는지 확인할 때 IN 키워드 사용.
- IF 1 IN ( 1, 2, 3, 4, 5 ) THEN
2-5. 부정식에는 != 또는 NOT 키워드 사용.
예) IF 1 != 2 AND NOT 2 = 1 AND 3 NOT IN ( 1, 2, 4, 5 ) THEN
3. PL/SQL 조건문 예제.
3-1. DEPTNO가 10인 부서의 지역을 확인하여 'NEW YORK'이면 'KOREA'로 변경하고, 'KOREA'이면 'NEW YORK'으로 하라.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
--실행 결과를 출력하도록 설정
SET SERVEROUTPUT ON
--스크립트 경과 시간을 출력하도록 설정
SET TIMING ON
DECLARE
--변수를 정의하는 영역
V_ROW_DATA SCOTT.DEPT%ROWTYPE;
V_RESULT_MSG VARCHAR2(500);
BEGIN
--작업 영역
--조회
SELECT T1.DEPTNO
, T1.DNAME
, T1.LOC
INTO V_ROW_DATA
FROM SCOTT.DEPT T1
WHERE T1.DEPTNO = 10
;
IF UPPER(V_ROW_DATA.LOC) = 'NEW YORK' THEN
UPDATE SCOTT.DEPT T1
SET T1.LOC = 'KOREA'
WHERE T1.LOC = 'NEW YORK'
;
V_RESULT_MSG := '근무지가 NEW YORK에서 KOREA로 변경되었습니다.';
ELSIF UPPER(V_ROW_DATA.LOC) = 'KOREA' THEN
UPDATE SCOTT.DEPT T1
SET T1.LOC = 'NEW YORK'
WHERE T1.LOC = 'KOREA'
;
V_RESULT_MSG := '근무지가 KOREA에서 NEW YORK으로 변경되었습니다.';
ELSE
V_RESULT_MSG := '근무지는 NEW YORK이 아닙니다.';
END IF;
COMMIT;
--조회 결과 출력
DBMS_OUTPUT.PUT_LINE( V_RESULT_MSG );
END
;
--작업 종료
|
cs |
- 10 ln: %ROWTYPE은 DEPT테이블의 컬럼 속성을 사용하며 한 개 이상의 컬럼을 담을 수 있음.
- 17~22 ln: 부서정보 조회.
- 25 ln: 근무지(LOC)을 대문자로 변환하여 'NEW YORK'과 비교.
- 26~30 ln: 조건이 참이면 UPDATE를 수행.
- 31 ln: 근무지(LOC)을 대문자로 변환하여 'KOREA'와 비교.
- 32~36 ln: 조건이 참이면 UPDATE를 수행.
- 41 ln: UPDATE를 반영하기 위해 COMMIT.
4. 마치며.
- PL/SQL에서 조건문은 더 설명할 내용이 없을것 같다. 단순히 값을 비교하여 분기시키는 것이기 때문에 어렵지않게 학습할 수 있을 것이다. 또, 'CASE WHEN'문을 알고 있다면 더더욱 쉽게 익힐 수 있을 것이다.
- 다음 포스트에서는 CURSOR를 이용한 반복문(LOOP)을 다루어 볼것이다.
'DATABASE > ORACLE' 카테고리의 다른 글
[PL/SQL] 무작정 시작하기 (4) - CURSOR (0) | 2020.01.14 |
---|---|
[PL/SQL] 무작성 시작하기 (3) - LOOP, WHILE 반복문 (0) | 2020.01.13 |
[PL/SQL] 무작정 시작하기 (1) - PL/SQL 이란? (0) | 2020.01.13 |
20190925 (0) | 2019.09.25 |
자주 사용하는 오라클 DML 정리 (0) | 2019.09.23 |
댓글