[Oracle]패키지 생성 및 실행하기

Yu River·2022년 6월 13일
0

오라클 패키지 생성

1) 오라클에서 패키지(Package)란?

한마디로 프로시저(Procedure)와 함수(Function) 집합이다.

한 패키지 안에 프로시저와 함수를 넣어놓고 필요할 때 패키지 내에 있는 프로시저와 함수를 뽑아 사용한다.

2) 오라클에서 패키지(Package)의 구성

1. 선언(Declaration) 부분

  • 패키지 안에 넣을 프로시저, 함수와 파라미터, 리턴 값을 정의한다.
-- 패키지 선언부분
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;

2. 바디 부분

  • 실제 프로시저, 함수 호출 시 수행할 내용을 정의한다.
-- 패키지 바디 부분
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;

2) 오라클에서 패키지(Package)의 함수와 프로시저 호출

  • 쿼리에서 패키지에 작성한 프로시저, 함수를 호출하려면 패키지명.프로시저명, 함수명; 으로 호출하면된다.
-- 패키지 호출 부분
-- 패키지 내의 프로시저, 함수 사용할 경우
BEGIN
	PACKAGE_TEST.PROC_TEST;
END;

BEGIN
	PACKAGE_TEST.PROC_TEST2('A', 1);
END;

SELECT PACKAGE_TEST.FUNC_TEST1('A') FROM DUAL
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글