상세 컨텐츠

본문 제목

[DATABASE>PL/SQL] 오라클 / POSTGRESQL 패키지 생성하기

PROGRAMMING/DATABASE

by 니콜 키크드만 2020. 3. 4. 14:25

본문

1)패키지?

자주 사용되는 모듈/로직화된 부분을 등록하여 사용하는 DB 기술로서, 프로그램 처리기능을 노출시키지 않아 보안성이 좋고, 프로그램 유지보수에도 유용하게 사용된다. 프로시저와 함수를 모아놓은 하나의 큰 객체라고 생각하면 된다.

 

2)패키지 구성

 2-1) 선언부 ( 프로시저 , 함수 , 전역변수 등 )

 2-2) 몸체부 (선언부에 등록한 함수 / 프로시저 )

 

 + 선언부에 등록하지 않은 프로시저와 함수도 몸체부에서 사용할 수는 있지만 선언부에 선언하면 다른 패키지에서도 사용이 가능하다. public 과 private의 개념이다

 

3)선언 생성

CREATE OR REPLACE PACKAGE P_DEV_PACKAGE_MAKE
IS
    TYPE V_CUR IS REF CURSOR;
    C_TABLENAME CONSTANT CHARACTER VARYING(10) DEFAULT 'EMP';
    
    PROCEDURE P_SEARCH_EMP(CLASS_NO NUMBER);
END P_DEV_PACKAGE_MAKE;

 

CREATE OR REPLACE PACKAGE "패키지 명"

IS

    프로시저(PROCEDURE) / 함수(FUNCTION) / 전역변수 등

 

END "패키지명";

 

4)몸체 생성

CREATE OR REPLACE PACKAGE BODY P_DEV_PACKAGE_MAKE
IS
    PROCEDURE P_SEARCH_EMP(CLASS_NO NUMBER) IS
    CURSOR P_CUR IS
        SELECT NAME
             , GRADE
          FROM EMP;
    BEGIN
        FOR ROW_DATA IN P_CUR LOOP
            DBMS_OUTPUT.PUT_LINE('이름 : ' || ROW_DATA.NAME);
            DBMS_OUTPUT.PUT_LINE('학년 : ' || ROW_DATA.GRADE);
        END LOOP;
    END P_SEARCH_EMP;
END P_DEV_PACKAGE_MAKE;

 

CREATE OR REPLACE PACKAGE BODY "패키지 명"

IS

    PROCEDURE "프로시저 명"("파라미터") IS -- 선언부에서 등록한 프로시저

    CURSOR P_CUR IS 

        SELECT NAME

             , GRADE

          FROM EMP;

    BEGIN

        FOR ROW_DATA IN P_CUR LOOP

            DBMS_OUTPUT.PUT_LINE('이름 : ' || ROW_DATA.NAME);

            DBMS_OUTPUT.PUT_LINE('학년 : ' || ROW_DATA.GRADE);

        END LOOP;

    END "프로시저 명";

END "패키지명";

 

5)실행하기

SET SERVEROUTPUT ON;

EXEC P_DEV_PACKAGE_MAKE.P_SEARCH_EMP(1);

 

EXEC 패키지명.프로시저명(파라미터);

반응형

관련글 더보기

댓글 영역