패키지
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 패키지[편집]
- 패키지란 변수, 상수, 서브프로그램등의 항목을 묶어놓은 객체.
- 여러가지 항목들을 모아 하나의 이름으로 묶어놓은 객체.
- 패키지는 컴파일 과정을 거쳐 데이터베이스에 저장되며 다른 프로그램에서 패키지의 항목을 참조하고 실행.
- 프로그래밍을 하다보면 프로시저같은 서브 프로그램 관리하기가 힘들어지게되고 자신이 필요한 항목을 찾는것마저 어려워지는 상황 발생.
보다 손쉽고 쳬계적으로 관리 하는 방법이 바로 패키지 임.
1.1 패키지 사용법[편집]
패키지는 선언부, 본문, 실행부 로 구성
1.2 선언부[편집]
CREATE OR REPLACE PACKAGE EX_PKG IS --패키지 선언
FUNCTION FUNC_1(P_PRODUCT_ID IN NUMBER) --패키지로 묶을 함수
RETURN VARCHAR2;
PROCEDURE PROC_1; --패키지로 묶을 프로시저1
PROCEDURE PROC_2(P_PRODUCT_ID IN NUMBER); --패키지로 묶을 프로시저2
END EX_PKG; --패키지 종료
실행부
CREATE OR REPLACE PACKAGE BODY EX_PKG IS --패키지 본문
----------패키지 선언부 함수1----------
FUNCTION FUNC_1(P_PRODUCT_ID IN NUMBER)
RETURN VARCHAR2
IS
V_PRODUCT_NAME VARCHAR2(100);
BEGIN
SELECT
PRODUCT_NAME
FROM PRODUCTS
WHERE
PRODUCT_ID = P_PRODUCT_ID ;
RETURN NVL(PRODUCT_NAME,'존재하지 않는 제품');
END FUNC_1;
----------패키지 선언부 프로시저1----------
PROCEDURE PROC_1
IS
CURSOR EX_CUR IS
SELECT
PRODUCT_ID,
PRODUCT_NAME
FROM PRODUCTS;
BEGIN
FOR I IN EX_CUR LOOP
DBMS_OUTPUT.PUT_LINE(' 제품ID : ' || I.PRODUCT_ID);
DBMS_OUTPUT.PUT_LINE(' 제품명 : ' || I.PRODUCT_NAME);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');
END PROC_1;
----------패키지 선언부 프로시저2----------
PROCEDURE PROC_2(P_PRODUCT_ID IN NUMBER)
IS
CURSOR EX_CUR IS
SELECT
PRODUCT_ID,
PRODUCT_NAME
FROM PRODUCTS
WHERE PRODUCT_ID = P_PRODUCT_ID;
BEGIN
FOR I IN EX_CUR LOOP
DBMS_OUTPUT.PUT_LINE(' 제품ID : ' || I.PRODUCT_ID);
DBMS_OUTPUT.PUT_LINE(' 제품명 : ' || I.PRODUCT_NAME);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM||'에러 발생 ');
END PROC_2;
END EX_PKG; --패키지 종료
실행부
-- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용
SET SERVEROUTPUT ON;
-- 패키지 실행
EXEC EX_PKG.FUNC_1(10);
EXEC EX_PKG.PROC_1;
EXEC EX_PKG.PROC_2(10);