1. PL/SQL 이란
Procedure Language / SQL 의 약자로, PL/SQL은 프로그래밍 언어의 절차적 특징과 함께 SQL의 조합이라고 할 수 있다.
즉, SQL을 확장한 절차적 언어 이다.
유저 프로세스가 PL/SQL 블록을 보내면, 서버 프로세스는 PL/SQL Engine 에서 해당 블록을 받고 SQL과 Procedure를 나눠서 SQL은 SQL Statement Executer 로 보낸다.
(1) 기본 특징
- 블록 단위의 실행 제공 ➡️ 이를 위해 BEGIN 과 END ; 를 사용한다. 마지막 라인에 / 를 입력하면 해당 블록이 실행된다.
- 변수, 상수 등을 선언하여 SQL과 절차형 언어에서 사용
- 변수 선언은 DECLARE 절에서만 가능하다. 그리고 BEGIN section 에서 새 값이 할당될 수 있다.
- IF 문을 사용하여 조건에 따라 문장들을 분기가 가능
- Loop 문을 사용하여 일련의 문장 반복 가능
2. 기본 PL/SQL Block 구조
| 영역 | 설명 | 옵션/필수 |
| DECLARE (선언부) | PL/SQL에서 사용하는 모든 변수나 상수를 선언하는 부분 | 옵션 |
| BEGIN(실행부) | 절차적 형식으로 SQL문을 실행할 수 있도록 절차적 언어의 요소인 제어문, 반복문, 함수 정의 등 로직을 기술할 수 있는 부 | 필수 |
| EXCEPTION(예외 처리부) | PL/SQL 문이 실행되는 동안 에러 발생 시 예외 처리 담당 | 옵션 |
| END(종료) | 필수 |
(1) PL/SQL Block 의 종류
- 익명 블록 : 이름이 없는 PL/SQL Block을 의미
- 이름 있는 블록 : DB의 객체로 저장되는 블록
- 프로시저(Procedure) : 리턴 값을 하나 이상 가질 수 있는 프로그램
- 함수(Function) : 리턴 값을 반드시 반환해야 하는 프로그램
- 패키지(Package) : 하나 이상의 프로시저, 함수, 변수, 예외 등의 묶음
- 트리거(Trigger) : 지정된 이벤트가 발생하면 자동으로 실행되는 PL/SQL 블
(2) PL/SQL 주석
| 종류 | 사용 기호 | 설명 |
| 한 줄 주석 | -- [주석 처리 내용] | 현재 줄만 주석 처리 된다. |
| 여러 줄 주석 | /* [주석 처리 내용] */ |
/*에서 */까지 여러 줄에 걸쳐 주석 처리가 된다. |
3. 실행 결과 화면에 출력
SET SERVEROUTPUT ON;
실행 결과를 화면에 출력하는 명령어이다.
[예시]
- "Hello world!" 출력해보기
SET SERVEROUTPUT ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello world!');
END;
/
4. 변수와 상수
[변수 선언 기본 형식]
변수_이름 자료형 := 값 또는 값이 도출되는 여러 표현식;
[변수 선언 및 변수 값 출력 예시]
DECLARE
V_EMPNO NUMBER(4) := 7788;
V_ENAME VARCHAR2(10);
BEGIN
V_ENAME = 'SCOTT';
DBMS_OUTPUT.PUT_LINE('V_EMPNO : ' || V_EMPNO);
DBMS_OUTPUT.PUT_LINE('V_ENAME : ' || V_ENAME);
END;
/
[결과 화면]
V_EMPNO : 7788
V_ENAME : SCOTT
[변수 기본값 지정하기]
DECLARE
V_DEPTNO NUMBER(2) DEFAULT 10;
BEGIN
DBMS_OUTPUT.PUT_LINE('V_DEPTNO : ' || V_DEPTNO);
END;
/
[결과 화면]
V_DEFTNO : 10
[상수 선언 기본 형식]
변수_이름 CONSTANT 자료형 := 값 또는 값을 도출하는 여러 표현식;
5. 조건 제어문
(1) IF 조건문
| 종류 | 설명 |
| IF-THEN | 특정 조건을 만족하는 경우 작업 수행 |
| IF-THEN-ELSE | 특정 조건을 만족하는 경우와 반대 경우에 각각 지정한 작업 수행 |
| IF-THEN-ELSIF | 여러 조건에 따라 각각 지정한 작업 수행 |
IF-THEN
[기본 형식]
IF 조건식 THEN
수행할 명령어;
END IF;
IF-THEN-ELSE
[기본 형식]
IF 조건식 THEN
수행할 명령어;
ELSE
수행할 명령어;
END IF;
IF-THEN-ELSIF
[기본 형식]
IF 조건식 THEN
수행할 명령어;
ELSIF 조건식
수행할 명령어;
ELSIF 조건식
수행할 명령어;
END IF;
(2) CASE 조건문
| 종류 | 설명 |
| 단순 CASE문 | 비교 기준이 되는 조건의 값이 여러 가지일 때 해당 값만 명시하여 작업 수행 |
| 검색 CASE문 | 특정한 비교 기준 없이 여러 조건식을 나열하여 조건식에 맞는 작업 수행 |
단순 CASE
[기본 형식]
CASE 비교 기준
WHEN 값1 THEN
수행할 명령어;
WHEN 값2 THEN
수행할 명령어;
ELSE
수행할 명령어;
END CASE;
검색 CASE
[기본 형식]
CASE
WHEN 조건식1 THEN
수행할 명령어;
WEHN 조건식2 THEN
수행할 명령어;
ELSE
수행할 명령어;
END CASE;
6. 반복 제어문
PL/SQL에서는 네 가지 반복문을 제공한다.
| 종류 | 설명 |
| 기본 LOOP | 기본 반복문 |
| WHILE LOOP | 특정 조건식의 결과를 통해 반복 수행 |
| FOR LOOP | 반복 횟수를 정하여 반복 수행 |
| Cursor FOR LOOP | 커서를 활용한 반복 수행 |
위의 반복문 외에도 반복 수행을 중단시키거나 특정 반복 주기를 건너 뛰는 명령어도 제공한다.
| 종류 | 설명 |
| EXIT | 수행 중인 반복문 종료 |
| EXIT-WHEN | 반복 종료를 위한 조건식을 지정하고 만족하면 반복 종료 |
| CONTINUE | 수행 중인 반복의 현재 주기를 건너뜀 |
| CONTINUE-WHEN | 특정 조건식을 지정하고 조건식을 만족하면 현재 반복 주기를 건너뜀 |
기본 LOOP
[기본 형식]
LOOP
반복 수행 작업;
END LOOP;
WHILE LOOP
[기본 형식]
WHILE 조건식 LOOP
반복 수행 작업;
END LOOP;
FOR LOOP
[기본 형식]
FOR i IN 시작값 .. 종료값 LOOP
반복 수행 작업;
END LOOP;
'Knowledge > 이론' 카테고리의 다른 글
| MyBatis (0) | 2024.07.26 |
|---|---|
| 오라클 함수 - 단일행 함수 (1) | 2024.07.24 |
| 오라클 데이터베이스 (2) | 2024.07.23 |
| JWT (Json Web Token) 이란 (0) | 2024.06.30 |
| 소프트웨어 아키텍처 (0) | 2024.06.27 |