오라클 패키지(package), 이론및실습
패키지란 연관성 있는, 논리적으로 연관된 PL/SQL 타입(Types), 변수(Variable), 서브 프로그램(저장 프로시저, 저장 함수)의 그룹이며 오라클 스키마 오브젝트 입니다.
패키지 명세(Specification)와 패키지 바디(Body)로 나누어지며 바디는 생략 가능 합니다.
패키지 명세는 CREATE PACKAGE 명령으로, 패키지 바디는 CREATE PACKAGE BODY 명령으로 작성 합니다.
패키지 명세에서 정의한 서브 프로그램 및 변수, 타입만 외부에서 접근, 호출 가능 합니다.
패키지 명세 : 타입, 전역변수, 커서, 예외, PL/SQL 프로그램에 대한 선언 패키지 바디 : 패키지 명세에서 정의한 모든 커서, 서브프로그램을 구현 |
패키지를 사용하는 장점은 다음과 같습니다.
모듈화 : 연관된 타입, 서브 프로그램들을 PL/SQL 모듈안에 캡슐화. 쉬운 응용프로그램 디자인 : 패키지 명세를 통한 커서, 예외, 함수나 프로시저의 구조를 정의하고 이를 먼저 컴파일하는 것이 가능 합니다. 정보의 숨김 : 패키지를 통해 타입, 서브프로그램 등을 PUBLIC, PRIVATE으로 정의를 할 수 있습니다. 기능 추가의 용이 : 패키지 명세에서 정의한 커서 or 예외, PUBLIC 변수들은 세션동안 유효하므로 이것들을 활용한 새로운 기능의 추가가 용이 합니다. 성능 향상 : 패키지안의 프로시저등이 최초 호출될 때 전체 패키지가 메모리에 로드 되므로 이후 호출 부터는 DISK I/O는 없습니다. |
<기본형식>
[패키지 명세] CREATE [OR REPLACE] PACKAGE package_name IS [variable declaration] [cursor declaration] [exception declaration] [procedure declaration] [function declaration] END;
[패키지 바디] CREATE [OR REPLACE] PACKAGE BODY package_name IS [variable declaration] [cursor implementation] [exception implementation] [procedure bodies] [function bodies] END; |
장 프로시저를 만들고 호출하는 실습을 해보겠습니다.
15.4.1. 패키지 HelloWorld 실습 : CREATE OR REPLACE PACKAGE
프로시저 하나만 가지는 HELLO라는 이름의 패키지를 생성해 봅시다.
먼저 패키지 명세를 작성하세요. |
-- 패키지명세는 패키지를 구성할 요소를 정의 합니다. CREATE OR REPLACE PACKAGE HELLO IS -- HELLO 패키지는 P_TEST라는 프로시저 하나로 이루어져 있습니다. PROCEDURE P_TEST(P_NAME VARCHAR2); END; |
<실행결과>
Procedure P_PRINT_ENAME이(가) 컴파일되었습니다.
패키지 바디를 작성하세요. |
-- 패키지 바디를 생성 합니다. CREATE OR REPLACE PACKAGE BODY HELLO IS -- 패키지 명세에서 정의한 P_TEST 프로시저를 작성합니다. PROCEDURE P_TEST(P_NAME VARCHAR2) IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello~ ' || P_NAME); END; END HELLO; |
<실행결과>
Package Body HELLO이(가) 컴파일되었습니다.
패키지의 프로시저를 호출해 봅시다.. |
SET SERVEROUTPUT ON; -- 패키지내의 프로시저를 호출할 때는 패키지.프로시저 형태로 호출 합니다. EXEC HELLO.P_TEST('골든래빗'); |
<실행결과>
Hello~ 골든래빗
댓글 없음:
댓글 쓰기