일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jsp게시판만들기
- 자바기초
- 스프링 CRUD게시판
- 스프링게시판만들기
- js datepicker
- CRUD게시판만들기
- 오버라이딩
- 게시판만들기
- 프로그래머스 쿼리문
- 2020정보처리기사실기
- 정처기실기정리
- 프로그래머스 SQL
- html기초
- 오라클설치
- PLSQL
- Oracle기초
- spring crud
- 2020정보처리기사실기정리
- 정보처리기사실기정리
- 날짜지정팝업
- 자바연산자
- crud게시판
- 스프링 crud
- 프로그래머스 MYSQL
- 자바 정규표현식 예제
- jsp 날짜팝업
- 2020정보처리기사실기요약
- 자바배열예제
- jsp 팝업띄우기
- spring crud게시판
Archives
- Today
- Total
영보의 SystemOut.log
[Oracle] PL/SQL - 제어문 (반복문 / 선택문 / 조건문) 종류와 예제 본문
반응형
개념 정리
# 제어문
- 반복문
- 선택문
- 조건문
# 조건문
종류 |
형식 |
단일 조건문 | IF(조건문) THEN 처리 END IF; => 비교연산자 (=, !=(<>), <, >, <=, =>), 논리연산자 (NOT,OR,AND) |
선택 조건문 | IF(조건문) THEN 처리 (조건문이 TRUE) ELSE 처리 END IF; |
다중 조건문 | IF(조건문) THEN 처리 ELSIF(조건문) THEN 처리 ELSIF(조건문) THEN 처리 ELSE 처리 END IF; |
선택 | CASE[조건] WHEN 조건 THEN 결과 WHEN 조건 THEN 결과 WHEN 조건 THEN 결과 ELSE 처리 END; |
# 반복문
종류 | 형식 |
while | WHILE 조건 LOOP 처리 END LOOP ; |
for | FOR i IN 1..9 LOOP // 1->9까지 처리 END LOOP; FOR i IN REVERSE 1..9 LOOP // 9->1까지 |
basic (loop) | LOOP 문장 문장 END LOOP ; |
예제
# 단일 조건문 예제
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
|
--단일 조건문
DECLARE
--선언부(변수선언)
vename emp.ename%TYPE;
vjob emp.job%TYPE;
vdname dept.dname%TYPE;
vdeptno emp.deptno%TYPE;
BEGIN
--구현부
--변수에 값 대입 => :=
SELECT deptno,ename,job INTO vdeptno,vename,vjob
FROM emp
WHERE ename='KING';
IF(vdeptno=10) THEN
vdname:='개발부';
END IF;
IF(vdeptno=20) THEN
vdname:='영업부';
END IF;
IF(vdeptno=30) THEN
vdname:='총무부';
END IF;
--결과값 출력
DBMS_OUTPUT.PUT_LINE('======결과값========');
DBMS_OUTPUT.PUT_LINE('이름:'||vename);
DBMS_OUTPUT.PUT_LINE('부서:'||vdname);
--예외처리
END;
/
|
cs |
# 다중 IF문 예제
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
|
--다중 IF 문
DECLARE
--선언부(변수선언)
vename emp.ename%TYPE;
vjob emp.job%TYPE;
vdname dept.dname%TYPE;
vdeptno emp.deptno%TYPE;
BEGIN
--구현부
--변수에 값 대입 => :=
SELECT deptno,ename,job INTO vdeptno,vename,vjob
FROM emp
WHERE ename='KING';
IF(vdeptno=10) THEN
vdname:='개발부';
ELSIF(vdeptno=20) THEN
vdname:='영업부';
ELSIF(vdeptno=30) THEN
vdname:='총무부';
END IF;
--결과값 출력
DBMS_OUTPUT.PUT_LINE('======결과값========');
DBMS_OUTPUT.PUT_LINE('이름:'||vename);
DBMS_OUTPUT.PUT_LINE('부서:'||vdname);
--예외처리
END;
/
|
cs |
# 선택 조건문 예제 (1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
-- 선택 조건문 IF~ELSE
-- 성과급이 없습니다.
DECLARE
vename emp.ename%TYPE;
vcomm emp.comm%TYPE;
vsal emp.sal%TYPE;
BEGIN
SELECT ename,comm,sal INTO vename,vcomm,vsal
FROM emp
WHERE ename='SMITH';
-- 연산처리 => NULL값일 경우에는 결과 값이 NULL
IF(vcomm>0) THEN
DBMS_OUTPUT.PUT_LINE(vename||'님의 성과급은'||vcomm||' 입니다.');
ELSE
DBMS_OUTPUT.PUT_LINE(vename||'님의 성과급은 없습니다.');
END IF;
END;
/
|
cs |
# 선택 조건문 예제 (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-- 선택 조건문 IF~ELSE
-- 성과급이 ㅇㅇ입니다
DECLARE
vename emp.ename%TYPE;
vcomm emp.comm%TYPE;
vsal emp.sal%TYPE;
BEGIN
SELECT ename,comm,sal INTO vename,vcomm,vsal
FROM emp
WHERE ename='MARTIN';
-- 연산처리 => NULL값일 경우에는 결과 값이 NULL
IF(vcomm>0) THEN
DBMS_OUTPUT.PUT_LINE(vename||'님의 성과급은'||vcomm||' 입니다.');
ELSE
DBMS_OUTPUT.PUT_LINE(vename||'님의 성과급은 없습니다.');
END IF;
END;
/
|
cs |
# CASE문 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
-- CASE = TRIGGER
-- 반복문
DECLARE
vempno emp.empno%TYPE;
vename emp.ename%TYPE;
vdeptno emp.deptno%TYPE;
vdname dept.dname%TYPE;
BEGIN
SELECT empno, ename, deptno INTO vempno,vename,vdeptno
FROM emp
WHERE ename='SMITH';
vdname:=CASE vdeptno
WHEN 10 THEN '개발부'
WHEN 20 THEN '총무부'
WHEN 30 THEN '자재부'
WHEN 40 THEN '신입'
END;
DBMS_OUTPUT.PUT_LINE('====결과====');
DBMS_OUTPUT.PUT_LINE('이름:'||vename);
DBMS_OUTPUT.PUT_LINE('사번:'||vempno);
DBMS_OUTPUT.PUT_LINE('부서:'||vdname);
END;
/
|
cs |
# FOR 문 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
-- 1부터 10까지 출력하는 FOR문
BEGIN
FOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
/
--10부터 1까지 출력하는 FOR문
BEGIN
FOR i IN REVERSE 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
/
|
cs |
반응형
'Database > Oracle' 카테고리의 다른 글
[Oracle] PL/SQL- Cursor(커서)와 예제 (0) | 2020.11.11 |
---|---|
[Oracle] Oracle 입력 값 받아서 구구단 출력 예제 (0) | 2020.11.10 |
[Oracle] Sub Query(서브쿼리) 종류와 예제(2) (0) | 2020.11.10 |
[Oracle] Sub Query(서브쿼리) 종류와 예제(1) (0) | 2020.11.10 |
[Oracle] DML / 데이터형 / Oralce 제약조건 (0) | 2020.08.18 |