🧱 24편. 패키지(PACKAGE)와 재사용 전략
PL/SQL에서 반복되는 로직을 구조화하고 모듈로 재사용할 수 있게 해주는 가장 강력한 도구는 PACKAGE입니다.
이번 글에서는 패키지의 구조(헤더/바디), 함수·프로시저 포함 방법, 전역 변수 관리 등 실무 중심의 작성 패턴을 정리합니다.
📦 1. PACKAGE란?
PACKAGE는 프로시저, 함수, 변수, 커서 등 PL/SQL 요소를 하나의 모듈 단위로 묶어 놓은 것입니다.
→ 재사용성과 유지보수성이 뛰어나고, 대형 시스템에서 핵심적인 구조로 활용됩니다.
📄 2. PACKAGE의 구조
① Package Specification (헤더)
CREATE OR REPLACE PACKAGE emp_pkg IS
-- 전역 변수
g_bonus_rate NUMBER := 0.1;
-- 프로시저/함수 선언
PROCEDURE raise_salary(p_empno IN NUMBER, p_amount IN NUMBER);
FUNCTION get_annual_salary(p_empno IN NUMBER) RETURN NUMBER;
END emp_pkg;
② Package Body (본문)
CREATE OR REPLACE PACKAGE BODY emp_pkg IS
PROCEDURE raise_salary(p_empno IN NUMBER, p_amount IN NUMBER) IS
BEGIN
UPDATE EMP
SET SAL = SAL + p_amount
WHERE EMPNO = p_empno;
END;
FUNCTION get_annual_salary(p_empno IN NUMBER) RETURN NUMBER IS
v_sal EMP.SAL%TYPE;
BEGIN
SELECT SAL INTO v_sal FROM EMP WHERE EMPNO = p_empno;
RETURN v_sal * 12 + (v_sal * 12 * g_bonus_rate);
END;
END emp_pkg;
📞 3. 패키지 호출 방법
BEGIN
emp_pkg.raise_salary(7369, 500);
DBMS_OUTPUT.PUT_LINE(emp_pkg.get_annual_salary(7369));
END;
🧠 4. 실무 적용 전략
- 여러 관련 로직을 하나의 패키지에 묶어서 **도메인 단위 모듈화**
- 패키지 헤더에는 외부에 공개할 함수/프로시저만 선언
- 테스트용 변수나 내부 로직은 바디에만 숨겨두어 정보 은닉
- 전역 변수로 공통 상수, 설정값 등을 관리 가능
🚧 5. 유지보수 시 유의점
- 패키지 바디만 변경하면 다른 오브젝트 재컴파일 불필요
- 패키지 헤더가 바뀌면 의존 오브젝트 모두 invalid → 재컴파일 필요
- 대형 시스템에서는 패키지 단위 배포/버전 관리 권장
📝 마무리
이번 글에서는 패키지(PACKAGE)의 구조와 재사용 전략을 정리했습니다.
이를 통해 PL/SQL 로직을 체계적으로 분리하고 유지보수하기 쉬운 형태로 구성할 수 있습니다.
다음 파트에서는 운영/보안/백업과 관련된 내용을 이어가겠습니다. (26편: Oracle Data Pump 백업 및 복구)
'database > oracle' 카테고리의 다른 글
🛠️ 26편. 사용자 권한 및 역할(Role) 관리 (0) | 2025.05.07 |
---|---|
🛠️ 25편. Oracle Data Pump 백업 및 복구 (0) | 2025.05.07 |
🧱 23편. 예외 처리, 변수/레코드 타입, 커스텀 구조 (1) | 2025.05.07 |
🧱 22편. 프로시저, 함수, 트리거 만들기 (1) | 2025.05.07 |
🧱 21편. PL/SQL 기본 문법과 블록 구조 (0) | 2025.05.07 |
댓글