-
PL/SQL이란? 오라클의 절차형 SQL 언어 정리Data 2025. 5. 1. 13:43

데이터베이스에서 단순한 SELECT, INSERT 같은 SQL 문만으로는 복잡한 로직을 처리하기 어려운 경우가 많다.
예를 들어 조건 분기, 반복, 예외 처리처럼 프로그래밍적인 흐름 제어가 필요한 상황에서는 SQL만으로는 한계가 있다.
이러한 문제를 해결하기 위해 Oracle에서는 PL/SQL이라는 절차형 SQL 언어를 제공한다.
이 글에서는 PL/SQL의 개념부터 특징, 구조, 기본 문법, 저장 프로시저의 종류, 그리고 프로시저 정의 방식까지 단계별로 정리한다.
실제 프로시저 작성 예제는 다음 글에서 다룰 예정이다.
1. PL/SQL이란?
PL/SQL은 Procedural Language/Structured Query Language의 줄임말로, Oracle에서 사용하는 SQL 전용 언어다.
기존 SQL 문법에 변수 선언, 제어문, 입출력, 예외 처리 등 프로그래밍 기능을 추가하여, SQL만으로는 구현하기 어려운 로직을 처리할 수 있도록 설계되었다.
주요 특징은 다음과 같다.
- Oracle 전용 SQL 확장 언어
- SQL에 프로그래밍 기능을 결합하여 복잡한 로직 처리 가능
- SQL Developer에서 작성 후 컴파일 및 실행 가능
2. PL/SQL의 특징
PL/SQL은 Block 구조를 기반으로 하는 절차형 언어다.
이러한 구조를 통해 로직을 모듈 단위로 분리하고 독립적으로 재사용할 수 있다.
PL/SQL이 갖는 주요 특징은 다음과 같다.
- Block 구조로 되어 있어 기능 단위별 모듈화가 가능하다.
- 변수나 상수 선언을 통해 SQL 문장 간에 값을 교환할 수 있다.
- IF, LOOP 등 제어문을 사용하여 절차적 프로그래밍이 가능하다.
- DBMS가 정의한 에러 외에, 사용자 정의 에러를 직접 설정하고 처리할 수 있다.
- Oracle DB에 내장되어 있어 이식성이 높다.
- 여러 SQL 문장을 하나의 Block으로 묶어 서버에 전송함으로써 서버 통신 횟수를 줄이고 성능을 향상시킬 수 있다.
3. PL/SQL의 아키텍처

PL/SQL은 SQL 문장과 프로그램 로직을 각기 다른 처리 계층에서 실행하는 구조를 가지고 있다.
- SQL 문장은 Oracle의 SQL Statement Executor가 처리한다.
- 절차적 로직은 PL/SQL 엔진이 처리한다.
이러한 구조 덕분에 SQL 실행과 로직 처리가 명확히 분리되어, 각각의 처리 단계가 최적화될 수 있다.
4. PL/SQL의 기본 문법

PL/SQL은 Block 구조를 기본으로 하며, 아래와 같은 형식으로 작성된다.
CREATE [OR REPLACE] PROCEDURE procedure_name ( argument1 [mode] data_type1, argument2 [mode] data_type2, ... ) IS -- 또는 AS -- 변수 선언 BEGIN -- 실행할 로직 EXCEPTION -- 예외 처리 END; /- CREATE PROCEDURE 뒤에 프로시저 이름과 매개변수를 정의한다.
- IS 또는 AS 키워드를 통해 본문을 시작한다.
- BEGIN ~ END 블록 내부에 실제 실행할 로직을 작성한다.
- EXCEPTION 절에서는 실행 도중 발생할 수 있는 예외를 처리한다.
5. 저장 프로시저의 종류
Oracle에서는 저장된 프로그램 객체를 통해 반복되는 로직을 재사용할 수 있다.
대표적으로 프로시저(Procedure), 트리거(Trigger), 사용자 정의 함수(Function)가 있으며, 이들은 모두 PL/SQL로 작성된다.
아래는 이 세 가지 저장 객체의 정의 방식과 특징을 비교한 표이다.
구분 프로시저 트리거 사용자 정의 함수 정의 방법 CREATE PROCEDURE 문 CREATE TRIGGER 문 CREATE FUNCTION 문 호출 방식 EXEC 문으로 직접 호출 INSERT, DELETE, UPDATE 발생 시 자동 실행 SELECT 문에서 직접 호출 주요 용도 복잡한 로직을 절차적으로 실행 데이터 무결성 유지, 트랜잭션 감시 등 자동 처리 값을 가공하여 반환, SQL 내부에서 활용 가능 세 객체 모두 PL/SQL로 작성되며, 오라클 데이터베이스 내부에 저장되어 필요할 때마다 실행 가능하다는 공통점을 가진다.
6. 프로시저란?
프로시저는 PL/SQL에서 특정 작업 단위를 하나의 이름으로 정의한 프로그램이다.
일반적인 프로그래밍 언어의 함수(Function)와 유사하지만, 반드시 값을 반환할 필요는 없다는 점에서 차이가 있다.
- 정의된 프로시저는 Oracle DB에 저장되며, 이를 Stored Procedure(저장 프로시저)라고 부른다.
- 복잡한 작업 순서를 하나로 묶어두고, 필요할 때마다 호출하여 실행할 수 있다.
- 결과값을 반환하지 않아도 되는 실행 단위로서 반복 작업이나 트랜잭션 로직을 처리하는 데 유용하다.
7. 프로시저 정의 및 실행 과정
프로시저는 SQL Developer 등에서 정의한 뒤, 다음 순서에 따라 실행하고 관리할 수 있다.
- SQL 워크시트 창에 프로시저를 정의한다.
- / 또는 F5 키를 이용해 스크립트를 실행한다.
- 실행 결과는 하단의 출력 창에 표시된다.
- 정의된 프로시저는 접속 트리에서 “프로시저” 폴더 아래에 등록된다.
또한, 주석은 아래와 같은 방식으로 작성할 수 있다.
- 한 줄 주석: -- 설명
- 여러 줄 주석: /* 설명 내용 */
마치며
지금까지 PL/SQL의 기본 개념, 특징, 구조, 문법 형식, 저장 객체의 종류, 그리고 프로시저 정의 방법까지 정리해 보았다.
실제 코드를 작성하고 실행하는 실습은 다음 포스트에서 다룰 예정이며,
기초 이론을 다진 후 예제를 통해 PL/SQL에 익숙해지는 과정을 이어갈 계획이다.
'Data' 카테고리의 다른 글
[JPA] Spring Data JPA의 핵심 개념 (1) 2026.01.24 [JPA] 기본적인 Spring Data Jpa 활용 (0) 2026.01.24 [Data] JPA - 나오게 된 배경, 사용 이유 (0) 2026.01.03 PL/SQL 실습 (2) 2025.05.01 데이터베이스 종류 (3) 2025.03.10