Knowledge/이론

PL/SQL

똑똑한망치 2024. 7. 25. 16:16
728x90
반응형

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