본문 바로가기

Database

[ SQL ] PROCEDURE(프로시져), PACKAGE(패키지)

 

PROCEDURE(프러시져)는 마치 함수와 다르지 않다.

 

함수와 같이 매개변수를 받는데 다른 점은 첫 번째RETURN 값이 없고, 두번째 TRANSTION이라는 개념을 가지고 있다.

마지막으로 프로시져는 업무 처리의 최소단위이다.

 

 

 

PROCEDURE 문법

 

CREATE OR REPLACE PROC_PROCEDUE
(
	매개변수명    IN OR OUT 	  VARCHAR2
)
AS 

    V_변수명					VARCHAR(30);

BEGIN

	NULL;
    
END PROC_PROCEDURE
;

 

  • 프러시져명은 보통 PROC_ 로 시작하여 누가 보더라도 PROCEDURE라는 걸 알 수 있게 하는 게 좋다.
  • 매개변수명도 CLIENT에게 받을 값은 IN, 보내줄 값을 OUT이라고 명시해주고 IN_ 또는 O_으로 시작해 매개변수의 속성을 이름만 봐도 알 수 있도록 하는 게 좋다.
  • AS와 BEGIN 사이 프러시져에서 사용할 변수를 선언해 줄 수 있고 보통 V_ 로 시작, 크기까지 명시해준다.
  • BEGIN부터 END까지 업무 처리를 위한 쿼리를 작성해준다. 이 안의 모든 명령어는 한 번에 처리되던지 하나도 처리되지 않아야 한다(TRANSACTION(ALL OR NOTHING)). 오류 없이 정상 실행되면 커밋하지 않아도 자동으로 커밋되며 하나라도 오류가 발생될 시에는 모두 롤백된다.
  • END 후 프러시져 명을 다시 한번 반복해줌으로써 프러시저가 끝이 났다는 것을 명시해준다.
  • 마지막으로 작성된 쿼리를 CPU가 전혀 알아듣지 못하기 때문에 오라클 엔진이 개발자 쿼리를 CPU가 알아들을 수 있도록 저장해주어야 한다(컴파일이 실행되어야 한다).

 

 

PACKAGE(패키지)는 HEAD와 BODY로 구성된다.

  • PACKAGE(패키지) 명은 PKG_로 시작해주어 누가 보더라도 PACKAGE라는 걸 알 수 있게 하는 게 좋다.
  • HEAD에는 여러 프로시져의 이름과 매개 변수만 정의하고 컴파일해주면 생성되고, HEAD 생성 후 본문 생성을 해줘야 BODY가 생성된다.
  • 수정이 필요할 때는 HEAD 먼저 수정하고 컴파일한 후 BODY를 똑같이 고쳐서 컴파일해주면 된다.
  • HEAD 수정 후 컴파일하고 나면 BODY 단은 오류 상태인데 그렇게 되면 그 데이터를 사용하려는 접근에 대해서 정상적인 처리가 이루어지지 않기 때문에 수정이 필요할 경우에는 오류 상태를 최소한으로 하여야 한다.

 

 

PACKAGE 문법

 

/* 테스트 패키지 시작 */
CREATE OR REPLACE PACKAGE PKG_PACKAGE AS 

-- SELECT PROCEDURE
   PROCEDURE PROC_SEL_PROCEDURE
  (
    IN_ID     	IN      VARCHAR2
  );

-- UPDATE PROCEDURE
  PROCEDURE PROC_UP_PROCEDURE
  (
    IN_ID             IN      VARCHAR2,   
    IN_COLUMN1        IN      VARCHAR2,     
    IN_COLUMN2        IN      VARCHAR2,     
    IN_COLUMN3        IN      VARCHAR2,
  );

-- INSERT PROCEDURE
  PROCEDURE PROC_INS_PROCEDURE
  (
    IN_ID             IN      VARCHAR2,   
    IN_COLUMN1        IN      VARCHAR2,     
    IN_COLUMN2        IN      VARCHAR2,     
    IN_COLUMN3        IN      VARCHAR2,      
  );
  
-- DELETE PROCEDURE
  PROCEDURE PROC_DEL_PROCEDURE
  (
    IN_ID       IN          VARCHAR2
  );

END PKG_PACKAGE;

 

  • 여러 프러시저를 한 패키지 안에 묶어 둠으로서 관리하기가 용이해진다.

'Database' 카테고리의 다른 글

[ SQL ] TO_CHAR 함수  (0) 2021.05.03
[ SQL ] 문자열 함수들  (0) 2021.05.03
[ SQL ] FUNCTION(함수)  (0) 2021.05.01
[ SQL ] WHERE EXISTS, NOT EXIST  (0) 2021.05.01
[ SQL ] EXCEPTION - 예외 처리  (0) 2021.04.30