상세 컨텐츠

본문 제목

Oracle - PACKAGE 실습

IT/DBMS

by TMI1 2025. 7. 16. 15:11

본문

--■■■ PACKAGE(패키지) ■■■ --

-- 1. PL/SQL 의 패키지는 관계되는 타입, 프로그램 객체,
--    서브 프로그램을(PROCEDURE, FUNCTION 등)을
--    논리적으로 묶어놓은 것으로 <<<<<
--    오라클에서 제공하는 패키지 중 하나가 바로 [DBMS_OUTPUT] 이다.

-- 2. 패키지는 서로 유사한 업무에  사용되는 여러 개의 프로시저와 함수를
--    하나의 패키지로 만들어 관리함으로써 향후 유지보수가 편리하고
--    전체 프로그램을 모듈화 할 수 있는 장점이 있다.

-- 3. 패키지는 명세부(PACKAGE SPECIFICATION)와
--    몸체부(PACKAGE BODY)로 구성되어 있으며
--    명세 부분에는 TYPE, CONSTRAINT, VARIABLE, EXCEPTION, CURSOR, SUBPROGRAM 등이 선언되고
--    몸체 부분에는 이들의 실제 내용이 존재하게 된다. 
--    그리고, 호출할 때에는 『패키지명.프로시저명』 형식의 참조를 이용해야 한다.

-- 4. 형식 및 구조(명세부)
/*
CREATE [OR REPLACE] PACKAGE 패키지명
IS
    전역변수 선언;
    커서 선언;
    예외 선언;
    함수 선언;
    프로시저 선언;
        :
END 패키지명;

-- 4. 형식 및 구조(몸체부) 
/*
CREATE [OR REPLACE] PACKAGE BODY 패키지명
IS
    FUNCTION 함수명[(인수, ...)]
    RETURN 자료형
    IS
        변수 선언;
    BEGIN
        함수 몸체 구성 코드;
        RETURN 값;
    END;
    
    PROCEDURE 프로시저명[(인수, ... )]
    IS
        변수 선언;
    BEGIN
        프로시저 몸체 구성 코드;
    END;
END 패키지명; 
*/

--○ 주민번호 입력 시 성별을 반환하는 함수
--   이 함수를 구성요소로 취하는 패키지 작성 

-- 함수 준비
CREATE OR REPLACE FUNCTION FN_GENDER(V_SSN VARCHAR2)
RETURN VARCHAR2
IS
    V_RESULT    VARCHAR2(20); 
BEGIN
    IF (SUBSTR(V_SSN, 8, 1) IN ('1', '3'))
            THEN V_RESULT := '남자';
        ELSIF (SUBSTR(V_SSN, 8, 1) IN ('2', '4'))
            THEN V_RESULT := '여자';
        ELSE
            V_RESULT := '성별확인불가';
        END IF;
        
        RETURN V_RESULT; 
END;
--==>> Function FN_GENDER이(가) 컴파일되었습니다.

-- 패키지 등록

-- 1. 명세부 작성
CREATE OR REPLACE PACKAGE INSA_PACK
IS
    FUNCTION FN_GENDER(V_SSN VARCHAR2)
    RETURN VARCHAR2;
END INSA_PACK; 
--==> Package INSA_PACK이(가) 컴파일되었습니다.

-- 2. 몸체부 작성 
CREATE OR REPLACE PACKAGE BODY INSA_PACK
IS  
    FUNCTION FN_GENDER(V_SSN VARCHAR2)
    RETURN VARCHAR2
    IS
        V_RESULT    VARCHAR2(20); 
BEGIN
    IF (SUBSTR(V_SSN, 8, 1) IN ('1', '3'))
            THEN V_RESULT := '남자';
        ELSIF (SUBSTR(V_SSN, 8, 1) IN ('2', '4'))
            THEN V_RESULT := '여자';
        ELSE
            V_RESULT := '성별확인불가';
        END IF;
        
        RETURN V_RESULT; 
END ;

END INSA_PACK; 
--==>> Package Body INSA_PACK이(가) 컴파일되었습니다.
-- 2번 시트로 이동

 

'IT > DBMS' 카테고리의 다른 글

작업객체의 의미와 종류  (1) 2025.08.04
JDBC 개념 및 환경설정  (7) 2025.08.04
Oracle - TRIGGER 실습  (3) 2025.07.16
Oracle - 프로시저(4)  (0) 2025.07.15
Oracle - 프로시저(3)  (0) 2025.07.14

관련글 더보기

댓글 영역