자주 사용되는 모듈/로직화된 부분을 등록하여 사용하는 DB 기술로서, 프로그램 처리기능을 노출시키지 않아 보안성이 좋고, 프로그램 유지보수에도 유용하게 사용된다. 프로시저와 함수를 모아놓은 하나의 큰 객체라고 생각하면 된다.
+ 선언부에 등록하지 않은 프로시저와 함수도 몸체부에서 사용할 수는 있지만 선언부에 선언하면 다른 패키지에서도 사용이 가능하다. public 과 private의 개념이다
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 "패키지명";
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 "패키지명";
SET SERVEROUTPUT ON;
EXEC P_DEV_PACKAGE_MAKE.P_SEARCH_EMP(1);
EXEC 패키지명.프로시저명(파라미터);
[DATABASE] SELECT 한 데이터 INSERT하기 INSERT INTO SELECT (0) | 2020.04.02 |
---|---|
[POSTGRES] 여러개의 행 하나의 행으로 표현하기 (0) | 2020.03.26 |
[POSTGRESQL] 문자 암호화 (0) | 2020.03.03 |
[ORACLE] TABLESPACE 생성/삭제/수정/조회 (0) | 2020.02.24 |
[ORACLE] FUNCTION 사용하기 (0) | 2020.02.24 |
댓글 영역