02 | 패키지 해부
패키지 구조
패키지 선언부
앞에서 설명했듯이 패키지는 선언부 와 본문으로 구성된다. 선언부Specification 는 스펙 혹은 명세라고도 하는데, 패키지에서 사용할 사용자 정의 타입, 변수, 상수, 예외, 그리고 서브 프로그램의 골격을 선언해 놓는 부분으로 그 구문은 다음과 같다.
패키지 선언부 구문
CREATE OR REPLACE PACKAGE 패키지명 IS
TYPE_구문;
상수명 CONSTANT 상수_타입;
예외명 EXCEPTION;
변수명 변수_타입;
커서 구문;
FUNCTION 함수명(매개변수1 IN 매개변수1_타입,
매개변수2 IN 매개변수2_타입,
... )
RETURN 반환 타입;
PROCEDURE 프로시저명(매개변수1 [IN, OUT, INOUT] 매개변수1_타입,
매개변수2 [IN, OUT, INOUT] 매개변수2_타입,
... );
...
END 패키지명;
패키지 선언부는 크게 데이터와 서브 프로그램 영역으로 나눌 수 있다. 데이터 영역은 03. 패키지 데이터 절에서 자세히 다루도록 하고, 여기서는 서브 프로그램 영역에 집중해 설명하겠다. 서브 프로그램에는 함수와 프로시저가 있는데, 패키지 선언부에서는 이 두 객체의 명세, 즉 서브 프로그램명과 매개변수를 명시한다(함수는 반환 타입까지 명시해야 한다). 해당 패키지 소유자 외의 다른 사용자는 선언부의 내용만 볼 수 있지만, 사용하려는 함수나 프로시저에 대해 필요한 모든 정보(서브 프로그램명, 매개변수 개수와 타입, 반환 타입)를 참조할 수 있으므로 사용하는데 전혀 문제가 없다.