메모장

[ DB ] 오라클 프로시저 (PROCEDURE) 본문

DB/개념정리

[ DB ] 오라클 프로시저 (PROCEDURE)

Itchild 2024. 4. 10. 22:47
728x90
반응형

 

프로 시저 (PROCEDURE) 란 ?
  • DB 에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로 영구저장모듈(Persistent Storage Module)이라고도 불린다.
  • 넓은 의미로 어떠한 업무를 수행하기 위한 절차를 뜻한다.

 

ex) 쇼핑몰에서 물건을 구매하는 과정을 프로시저로 표현해본다면

  1. 쇼핑몰 회원으로 로그인-> 2. 구매할 물건을 선택한다.-> 3. 개인정보 및 배송지를 선택한다.-> 4. 결제

어떤 프로세스를 절차적으로 기술해 놓은 것을 프로시저라고 한다.

 

 

  • 쿼리문을 하나의 메서드 형식으로 만들고 어떤 동작을 일괄적으로 처리하는 용도로 쓰인다.
  • 만약 여러 개의 칼럼을 조회하거나, 여러 개의 테이블을 조회하려고 할 때 이것을 하나의 쿼리문으로 만들려면 복잡하고 긴 쿼리문이 생성한다. 이렇게 여러 개의 쿼리를 사용할 때 일일이 긴 쿼리문을 사용하게 된다면 불편하기에 이를 프로시저에 저장하여 호출한다.
  • 문자나 숫자 연산에 프로시저를 사용하면 오히려 C나 JAVA보다 처리 성능이 느리다.
  • 함수와 비슷하다. 함수와의 차이점도 알아두자

 



프로시저(Procedure)와 함수(Function)의 차이

장점

하나의 요청으로 여러 SQL문을 실행시킬 수 있습니다. (네트워크 부하를 줄일 수 있음)

 

네트워크 소요 시간을 줄여 성능을 개선할 수 있습니다.

 

여러 어플리케이션과 공유가 가능합니다. (API처럼 제공가능)

 

기능 변경이 편합니다. (특정 기능을 변경할 때 프로시저만 변경하면 됨)

 

단점

문자나 숫자열 연산에 사용하면 오히려 C,Java보다 느린 성능을 보일 수 있습니다.

유지보수가 어렵습니다.(프로시져가 앱의 어디에 사용되는지 확인이 어려움)

 

 

프로시저 문법

CREATE OR REPLACE PROCEDURE 프로시져이름 (파라미터1,파라미터2...);
    // ex) CREATE OR REPLACE PROCEDURE GET_TIER(in_name IN VARCHAR2,out_tier OUT VARCHAR2)
IS
변수

BEGIN

쿼리문

END 프로시져 이름;
 
---------------------------------------------------------------------------

파라미터 값은 in,out,inout으로 총 세가지 종류로 작성할 수 있습니다.

먼저 in은 전달될 데이터이고, 
out은 결과로 나갈 데이터, 
in out in과 out 모두 가능한 데이터를 뜻합니다.
 

 

조회 및 삭제

// 조회
DECLARE
출력될 변수 선언
실행할 프로시저
출력문(Optional)
END

// 삭제
DROP PROCEDURE 프로시저명;
 

 

 

728x90
반응형

'DB > 개념정리' 카테고리의 다른 글

[ Oracle ] EXTRACT 함수  (0) 2024.04.10
COALESCE 함수  (0) 2024.04.10
[ DB ] 이벤트 스케쥴러  (0) 2024.04.10
[DB] 트리거  (0) 2024.04.10
유니크 키 (Unique Key)  (0) 2024.04.10