정의
PL/SQL(Procedural Language for SQL)은 Oracle Corporation이 개발한 관계형 데이터베이스용 절차적 프로그래밍 언어이다. SQL 문에 절차적 언어 요소(조건문, 반복문, 예외 처리 등)를 결합하여 데이터베이스 내에서 복합적인 로직을 구현하도록 설계되었다【1】.
주요 특징
| 구분 | 내용 |
|---|---|
| 블록 구조 | PL/SQL 프로그램은 DECLARE, BEGIN, EXCEPTION, END 키워드로 구분되는 블록 형태로 구성된다. 블록은 중첩이 가능하며, DECLARE 절에서 변수·상수·타입 등을 선언한다. |
| 프로그램 단위 | 익명 블록, 저장 프로시저, 함수, 패키지(스펙·바디), 트리거, 사용자 정의 타입·타입 바디 등 다양한 단위로 저장·재사용이 가능하다. |
| SQL 통합 | SQL 문을 PL/SQL 블록 안에서 그대로 사용 가능하며, SQL과 PL/SQL이 동일한 엔진에서 실행되어 데이터베이스와의 통신 오버헤드가 최소화된다. |
| 예외 처리 | EXCEPTION 절을 통해 런타임 오류를 포착·처리할 수 있다. 사전 정의된 예외와 사용자 정의 예외를 활용한다. |
| 변수·상수·타입 | 변수와 상수는 선언 시 자료형을 지정하며, 레코드, 테이블, 컬렉션 등 복합 자료형도 지원한다. |
| 성능 | 서버 측에서 실행되므로 네트워크 왕복을 줄이고, 한번 컴파일된 PL/SQL 코드는 재사용 시 실행 속도가 빠르다. |
| 보안 | 데이터베이스 내에 저장되어 실행되므로 클라이언트 애플리케이션에 비해 권한 관리와 감사가 용이하다. |
역사·배경
- 1990년대 초 Oracle에서 자체 개발하여 1995년 Oracle7에 처음 포함되었다. 이후 Oracle Database 버전과 함께 지속적으로 기능이 추가·보강되어 현재는 Oracle Database 핵심 언어 중 하나로 자리 잡고 있다【3】.
사용 맥락
- 기업용 애플리케이션에서 데이터 무결성 검증, 복잡한 비즈니스 로직, 배치 처리, 트리거 기반 자동 작업 등에 널리 활용된다.
- Oracle의 다양한 프로그래밍 인터페이스(JDBC, OCI, ODP.NET 등)에서 PL/SQL 호출이 가능하다.
참고 문헌
- Wikipedia, “PL/SQL”, https://en.wikipedia.org/wiki/PL/SQL
- GeeksforGeeks, “PL/SQL Introduction”, https://www.geeksforgeeks.org/plsql/plsql-introduction
- Tutorialspoint, “PL/SQL Tutorial”, https://www.tutorialspoint.com/plsql/index.htm