오라클의 패키지(Package)는 C++ 나 C# 등의 클래스(또는 네임스페이스)와 유사한 개념으로 동작합니다.
다시 말하면 어떠한 특정 목적을 가진 함수의 집합 등을 모아서 패키지로 묶는 다는 개념입니다.
패키지는 다른 개발 언어와 유사하게 정의 또는 선언부(Package)와 구현부(Package Body)를 분리하여 관리합니다.
C++에서 클래스의 정의/선언부(Definition or Declaration, [h file, Header file])와 구현부(Implementation [cpp file])를 분리해놓은 것과 같다 보면 됩니다.
패키지를 선언하고, 패키지에 포함될 함수는 먼저 정의 되어야 합니다.
아래는 패키지 정의 및 구현에 대한 샘플입니다.
1. 패키지 정의하기
CREATE OR REPLACE PACKAGE ABC.PACK_PROJECT_PACKAGENAME -- ABC 데이터베이스에 PACK_PROJECT_PACKAGENAME 이라는 이름의 패키지를 생성 또는 이미 있다면 변경합니다.
/******************************************************************************
NAME: PACK_PROJECT_PACKAGENAME
PURPOSE:
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2012-07-24 1. Created this package.
******************************************************************************/
IS
FUNCTION FUNC_TYPE1(V_INPUT_STRING IN VARCHAR2) -- 다음과 같은 함수를 패키지 내에 정의합니다.
RETURN VARCHAR2;
FUNCTION FUNC_TYPE2(V_INPUT_STRING IN VARCHAR2, KEY_DATA IN VARCHAR2 := '123') -- 다음과 같은 함수를 패키지 내에 정의합니다.
RETURN RAW;
FUNCTION FUNC_TYPE3(V_INPUT_STRING IN RAW) -- 다음과 같은 함수를 패키지 내에 정의합니다.
RETURN VARCHAR2;
END PACK_PROJECT_PACKAGENAME; -- 패키지 정의를 끝냅니다.
/
2. 패키지 구현하기
CREATE OR REPLACE PACKAGE BODY ABC.PACK_PROJECT_PACKAGENAME
/******************************************************************************
NAME: PACK_PROJECT_PACKAGENAME
PURPOSE:
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2012-07-24 1. Created this package body.
******************************************************************************/
IS
FUNCTION FUNC_TYPE1(V_INPUT_STRING IN VARCHAR2) RETURN VARCHAR2 -- 함수 정의 시작
IS
V_ORIGINAL_RAW RAW(64); -- 함수에서 사용될 변수 선언
V_RETURN VARCHAR2(64);
BEGIN
-- 함수 구현하기
RETURN V_RETURN; -- 리턴 값 (VARCAHR2 형)
END FUNC_TYPE1; -- 함수 구현 종료
FUNCTION FUNC_TYPE2(V_INPUT_STRING IN VARCHAR2, KEY_DATA IN VARCHAR2 := 123') RETURN RAW
IS
V_RETURN RAW(64);
BEGIN
-- 함수 구현하기
RETURN V_RETURN;
END FUNC_TYPE2;
FUNCTION FUNC_TYPE3(V_INPUT_STRING IN VARCHAR2) RETURN VARCHAR2
IS
V_RETURN VARCHAR2(64);
BEGIN
-- 함수 구현하기
RETURN V_RETURN;
END FUNC_TYPE3;
END PACK_PROJECT_PACKAGENAME;
/
'개발&컴퓨터 > DB' 카테고리의 다른 글
MSSQL 예상 실행 계획으로 프로시져(또는 쿼리) 개선하기. (1) | 2014.09.19 |
---|---|
[오라클] 문자열 자르기. (0) | 2014.09.03 |
MS-SQL 기본 포트(1433포트) 변경하기 - 무차별 대입 공격 막기 (2) | 2014.08.16 |
오라클(Oracle) 데이터베이스 데이터 암호화 (0) | 2014.08.15 |
MS-SQL 트리거 사용하기 (간략 공략!?!?) (1) | 2014.08.15 |