본문 바로가기

DB관련/oracle

서브 프로그램 3 - 패키지 (ORACLE PACKAGE)

A>패키지

 

1.패키지란

연관성이 높은 함수나 프로시저를 묶어놓은 그룹

PL/SQL 이나 복합 유형의 데이터 

함수나 프로시져 등이 

패키지라는 그룹으로 묶여있다.

 

2.구성

선언부와 몸체부로 구성된다.

2-1 . 선언부 

함수나 프로시져, 변수 등의 정의 선언 부분

 

B.사용

문형

선언부

CREATE PACKAGE 패키지 이름

IS 

함수, 프로시저 ,변수 등의 선언부

END 패키지 이름;

 

몸체부

CREATE PACKAGE BODY  패키지 이름

IS

실제 실행문 구현부

END 패키지 이름

 

C> 삭제

둘다 할수도 있고

둘 중 하나만 할 수도 있다.

DROP PACKAGE package_name ;

DROP PACKAGE BODY package_name ;

 

D> 예시

 

1) 예시1

--패키지 선언부 생성
CREATE OR REPLACE PACKAGE emp_total
AS
    PROCEDURE emp_sum;
    PROCEDURE emp_avg;
END emp_total;
/
--패키지 몸체부 생성
CREATE OR REPLACE PACKAGE BODY emp_total 
AS 
    PROCEDURE emp_sum  IS 
        CURSOR emp_total_sum IS
        SELECT COUNT(*),SUM(NVL(sal,0))
        FROM emp;
    total_num number;
    total_sum number;
BEGIN
    OPEN emp_total_sum;
    FETCH emp_total_sum INTO total_num, total_sum;
    DBMS_OUTPUT.PUT_LINE('총인원수: '||total_num||' , 급여합계: '||total_sum);
    CLOSE emp_total_sum;
END emp_sum;
PROCEDURE emp_avg IS 
    CURSOR emp_total_avg IS
        SELECT COUNT(*) ,AVG(NVL(sal,0))
        FROM emp;
    total_num number;
    total_avg number;
BEGIN
    OPEN emp_total_avg;
    FETCH emp_total_avg INTO total_num, total_avg;
    DBMS_OUTPUT.PUT_LINE('총인원수: '||total_num||' , 급여평균: '||total_avg);
    CLOSE emp_total_avg;
    END emp_avg;
end emp_total;
/

--결과 실행
EXEC emp_total.emp_sum;
EXEC emp_total.emp_avg;

 

E>생성된 패키지 조회하기

1.선언부 조회

SELECT text FROM user_source 

WHERE type ='PACKAGE';

 

2.몸체(BODY) 조회 

SELECT text FROM user_source 

WHERE type LIKE 'PACKAGE BODY';

'DB관련 > oracle' 카테고리의 다른 글

CONNECT BY 사용하기  (0) 2023.11.07
서브 프로그램 4 - 트리거 (TRIGGER)  (0) 2021.01.21
서브 프로그램 - 내장함수(FUNCTION)  (0) 2021.01.21
서브 프로그램 - 프로시져(PROCEDURE)  (0) 2021.01.21
예외와 예외처리  (0) 2021.01.21