반응형
오라클에서 패키지(Package)는
프로시저(Procedure)와 함수(Function) 집합이라고 보면 되는데
한 패키지 안에 프로시저와 함수를 넣어놓고
필요할 때 패키지 내에 있는 프로시저와 함수를 뽑아 사용하는 식이다
먼저 프로시저와 함수 개념과 사용법을 모른다면 아래 글을 읽고 올 것을 권장한다
패키지는 선언(Declaration) 부분과 바디 부분으로 나누어져 있는데
선언 부분에서는 패키지 안에 넣을 프로시저, 함수와 파라미터, 리턴 값을 정의하고
바디 부분에서는 실제 프로시저, 함수 호출 시 수행할 내용을 정의한다
이렇게 패키지를 작성한 후에
쿼리에서 패키지에 작성한 프로시저, 함수를 호출하려면
패키지명.프로시저명, 함수명; 처럼 호출하는데
예제를 보면 아래와 같이 호출해주면 된다
이제 정리를 해 보자면 패키지는 프로시저와 함수를 모아놓은 것이고
패키지 생성 시에는 선언, 바디 부분으로 나뉘며
선언 부분에서는 프로시저와, 함수명, 파라미터, 리턴 값을 작성하며
바디 부분에서는 프로시저, 함수 호출 시 수행할 내용을 작성한다
이후 패키지 작성 후에 패키지 안의 프로시저와 함수를 호출하려면
패키지명.프로시저, 함수명;
이런 식으로 호출한다
마지막으로 예제에 사용한 코드는 아래와 같다
-- 패키지 선언부분
CREATE OR REPLACE PACKAGE SCOTT.PACKAGE_TEST
AS
-- 패키지에 들어올 프로시저, 함수 정의
PROCEDURE PROC_TEST;
PROCEDURE PROC_TEST2(NAME IN VARCHAR2, AGE IN NUMBER);
FUNCTION examFunc(getGender IN VARCHAR2) RETURN VARCHAR2;
END PACKAGE_TEST;
-- 패키지 바디 부분
CREATE OR REPLACE PACKAGE BODY SCOTT.PACKAGE_TEST
AS
-- 패키지 내 프로시저, 함수 내용 정의
PROCEDURE PROC_TEST
IS
BEGIN
INSERT INTO TABLE_TEST(COL1,COL2) VALUES('TEST', 1);
END PROC_TEST;
PROCEDURE PROC_TEST2(NAME IN VARCHAR2, AGE IN NUMBER)
IS
BEGIN
INSERT INTO TABLE_TEST(COL1,COL2) VALUES(NAME, AGE);
END PROC_TEST2;
FUNCTION examFunc -- 함수명
(getGender IN VARCHAR2) -- 함수 호출시 받아올 파라미터 정의
RETURN VARCHAR2 -- 함수 수행 시 반환할 데이터 타입
IS -- 사용할 변수 정의
setGender VARCHAR2(100);
BEGIN -- 변수를 가지고 함수 수행
IF getGender = '남' THEN setGender := '남자';
ELSIF getGender = '여' THEN setGender := '여자';
ELSE setGender := '오류';
END IF;
RETURN setGender; -- 반환
END examFunc;
END PACKAGE_TEST;
-- 패키지 호출 부분
-- 패키지 내의 프로시저, 함수 사용할 경우
BEGIN
PACKAGE_TEST.PROC_TEST;
END;
BEGIN
PACKAGE_TEST.PROC_TEST2('홍길동', 50);
END;
SELECT PACKAGE_TEST.examFunc('남') FROM DUAL
반응형
'SQL > Oracle' 카테고리의 다른 글
오라클 SQL 바닥부터 실전까지 정리글 (1) | 2020.02.23 |
---|---|
오라클 between a and b 예제 및 사용방법 (0) | 2020.02.20 |
SQL CRUD중 가장 주의해야 할 문장은? (0) | 2020.01.29 |
오라클 프로시저(Procedure) 작성부터 실행, 조회까지 (1) | 2020.01.01 |
오라클 sys, 계정 비밀번호 분실 시 변경방법 (1) | 2019.12.30 |
댓글