PL/SQL이란?

**PL/SQL(Procedural Language/SQL)**은 Oracle에서 사용하는 SQL의 확장 프로그래밍 언어입니다.

일반적인 SQL 문장에 조건문, 반복문, 변수 선언 등을 추가하여 절차적(Procedural) 프로그래밍을 가능하게 합니다.


PL/SQL 블록 구조

DECLARE
   -- 변수 선언 (선택 사항)
   변수명 데이터타입;

BEGIN
   -- 실행부 (필수)
   -- SQL 및 로직 작성
   변수명 := 값;
   DBMS_OUTPUT.PUT_LINE('출력할 메시지');

EXCEPTION
   -- 예외 처리부 (선택 사항)
   WHEN 예외명 THEN
      -- 오류 처리 로직

END;
/

예시

DECLARE
   v_name VARCHAR2(20);
BEGIN
   v_name := '홍길동';
   DBMS_OUTPUT.PUT_LINE('안녕하세요, ' || v_name || '님!');
END;
/

출력 결과:
안녕하세요, 홍길동님!


자주 쓰이는 기능

  • 변수 선언
  • 조건문 (IF, CASE)
  • 반복문 (LOOP, WHILE, FOR)
  • 예외 처리 (EXCEPTION)
  • 커서(CURSOR): 여러 행을 처리할 때 사용
  • 프로시저 및 함수 생성

 


PL/SQL의 장점

장점 설명

1. 절차적 언어 지원 조건문, 반복문, 변수 등을 사용하여 복잡한 로직 구현이 가능
2. 높은 성능 SQL을 반복적으로 호출하지 않고, 한번에 처리함으로써 네트워크 부담 감소 및 실행 속도 향상
3. 모듈화 가능 프로시저, 함수, 패키지로 코드 재사용 및 유지보수가 쉬움
4. 예외 처리 가능 오류 발생 시 적절한 처리를 통해 프로그램 안정성 향상
5. 데이터베이스 내 실행 로직이 데이터베이스 내부에서 실행되므로 보안과 응답 속도 측면에서 유리
6. 트리거 지원 데이터 변경 이벤트에 반응하는 자동화 작업 설정 가능

PL/SQL의 단점

단점 설명

1. Oracle 전용 (DB2 SQL PL 사용) Oracle DB에서만 사용 가능, 다른 DBMS(MySQL, PostgreSQL 등)에서는 호환되지 않음
2. 복잡한 디버깅 일반 프로그래밍 언어에 비해 디버깅이 불편하고 도구 지원이 제한적임
3. UI 기능 없음 UI나 클라이언트 기능이 없기 때문에 다른 언어와 결합해 사용해야 함
4. 러닝 커브 SQL만 사용하던 개발자에게는 절차적 개념이 익숙하지 않을 수 있음
5. 유지보수 어려움 (대형 시스템) 로직이 지나치게 데이터베이스에 집중되면 업무 변경 시 유지보수가 어려워질 수 있음

 

** PL/SQL은 Oracle 전용 언어이기 때문에, IBM DB2에서는 직접 사용할 수 없습니다.
하지만 DB2에서도 PL/SQL과 비슷한 기능을 하는 **SQL PL(SQL Procedural Language)**이라는 절차적 언어를 지원합니다.


요약

구분 내용

장점 성능 향상, 복잡한 로직 구현, 재사용성, 예외처리, 보안성
단점 Oracle 전용, 디버깅 어려움, UI 없음, 러닝 커브, 복잡한 시스템의 유지보수 부담

 

+ Recent posts