패키지란?
- 오라클에 저장되어 있는 서로 관련 있는 PL/SQL 프로시저, 함수, 타입등을 논리적으로 묶어 놓은 집합 이다.
- 패키지는 선언부와 본문으로 나눈다.
- 패키지 내에서는 프로시저, 함수는 오버로딩(중복 정의)이 가능하다.
오버로딩
- 매개변수의 개수나 타입이 다르면 동일한 이름으로 프로시저나 함수를 여러 개 정의할 수 있는데, 이를 오버로딩이라 한다.
- 오버로딩은 패키니 내에서 만 가능하다.
패키지 목록 확인
SELECT * FROM user_objects WHERE object_type = 'PACKAGE';
SELECT * FROM user_objects WHERE object_type = 'PACKAGE BODY';

패키지 내의 프로시저, 함수 목록 확인
SELECT * FROM user_procedures WHERE object_type = 'PACKAGE';
패키지 생성
- 선언 절은 패키지에 포함될 PL/SQL 프로시저나, 함수, 커서, 변수, 예외 절을 선언 한다.
- 패키지 선언부에서 선언한 모든 요소들을 패키지 전체에 적용 된다.
형식
CREATE [OR REPLACE] PACKAGE 패키지명 IS
[ 변수 선언 절 ]
[ 커서 선언 절 ]
[ 예외 선언 절 ]
[ 함수 선언 절 ]
[ 프로시저 선언 절 ]
END 패키지명;
- 함수 선언 절 : FUNCTION 함수명[(인수)] RETURN 리턴타입;
- 프로시저 선언 절 : PROCEDURE 프로시저명 [(인수)]
패키지 삭제
형식
CCREATE [OR REPLACE] PACKAGE BODY 패키지명 is
[함수 구현]
[프로시저 구현]
...
END 패키지명;
패키지 몸체 구현
함수 구현 형식
FUNCTION 함수먕[(인수)] RETURN 리턴타입
IS
[변수선언]
BEGIN
함수몸체구현
RETURN 리턴값;
END;
프로시저 구현 형식
PROCEDURE 프로시저명[(인수)]
IS
[변수선언]
BEGIN
프로시저몸체구현
END;
패키지 내 프로시저나 함수 실행
- 패키지내의 함수나 프로시저 실행은 패키지 명 다음에 점(.)을 찍고 프로시저나 함수 명을 적어준다.
EXEC 패키지명.프로시저명(인수);
패키지 삭제
DROP PACKAGE 패키지명;
DROP PACKAGE BODY 패키지명;