한마디로 프로시저(Procedure)와 함수(Function) 집합이다.
한 패키지 안에 프로시저와 함수를 넣어놓고 필요할 때 패키지 내에 있는 프로시저와 함수를 뽑아 사용한다.
-- 패키지 선언부분
CREATE OR REPLACE PACKAGE SCOTT.PACKAGE_TEST
AS
-- 패키지에 들어올 프로시저, 함수 정의
PROCEDURE PROC_TEST;
PROCEDURE PROC_TEST2(COLTEST1 IN VARCHAR2, COLTEST2 IN NUMBER);
FUNCTION FUNC_TEST1(COLTEST3 IN VARCHAR2) RETURN VARCHAR2;
END PACKAGE_TEST;
-- 패키지 바디 부분
CREATE OR REPLACE PACKAGE BODY SCOTT.PACKAGE_TEST
AS
-- 패키지 내 프로시저, 함수 내용 정의
PROCEDURE PROC_TEST
IS
BEGIN
INSERT INTO TABLE_TEST(COL1,COL2) VALUES('TEST', 1);
END PROC_TEST;
PROCEDURE PROC_TEST2(COL1 IN VARCHAR2, COL2 IN NUMBER)
IS
BEGIN
INSERT INTO TABLE_TEST(COL1,COL2) VALUES(COLTEST1, COLTEST2);
END PROC_TEST2;
FUNCTION FUNC_TEST1 -- 함수명
(COLTEST3 IN VARCHAR2) -- 함수 호출시 받아올 파라미터 정의
RETURN VARCHAR2 -- 함수 수행 시 반환할 데이터 타입
IS -- 사용할 변수 정의
testResult VARCHAR2(100);
BEGIN -- 변수를 가지고 함수 수행
IF COLTEST3 = 'A' THEN testResult := 'AA';
ELSIF COLTEST3 = 'B' THEN testResult := 'BB';
ELSE testResult := '오류';
END IF;
RETURN testResult; -- 반환
END FUNC_TEST1;
END PACKAGE_TEST;
-- 패키지 호출 부분
-- 패키지 내의 프로시저, 함수 사용할 경우
BEGIN
PACKAGE_TEST.PROC_TEST;
END;
BEGIN
PACKAGE_TEST.PROC_TEST2('A', 1);
END;
SELECT PACKAGE_TEST.FUNC_TEST1('A') FROM DUAL