데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로 영구저장모듈(Persistent Storage Module)이라고도 불립니다.
보통 저장 프로시저를 프로시저라고 부르며, 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합입니다.
즉, 특정 작업을 위한 쿼리들의 블록입니다.
(거의 함수와 비슷합니다. 차이점은 여기 에서 확인하시면 됩니다.)
장점
하나의 요청으로 여러 SQL문을 실행시킬 수 있습니다. (네트워크 부하를 줄일 수 있음)
네트워크 소요 시간을 줄여 성능을 개선할 수 있습니다.
여러 어플리케이션과 공유가 가능합니다. (API처럼 제공가능)
기능 변경이 편합니다. (특정 기능을 변경할 때 프로시저만 변경하면 됨)
단점
문자나 숫자열 연산에 사용하면 오히려 C,Java보다 느린 성능을 보일 수 있습니다.
유지보수가 어렵습니다.(프로시져가 앱의 어디에 사용되는지 확인이 어려움)
생성
CREATE OR REPLACE PROCEDURE 프로시져이름 (파라미터1,파라미터2...);
IS
변수
BEGIN
쿼리문
END 프로시져 이름;
소환사의 티어를 알아내는 프로시저
CREATE OR REPLACE PROCEDURE GET_TIER(in_name IN VARCHAR2,out_tier OUT VARCHAR2)
IS
BEGIN
SELECT TIER INTO out_tier FROM SUMMONER_TB WHERE NAME = in_name;
EXCEPTION
--소환사를 찾을 수 없을 때
WEHN NO_DATA_FOUND THEN
out_tier:='NO_SUMMONER_FOUND';
END GET_TIER;
파라미터 값은 in,out,inout으로 총 세가지 종류로 작성할 수 있습니다.
먼저 in은 전달될 데이터이고, out은 결과로 나갈 데이터, in out in과 out 모두 가능한 데이터를 뜻합니다.
아래와 같이 프로시저가 생성된 걸 볼 수 있습니다.
조회
DECLARE
출력될 변수 선언
실행할 프로시저
출력문(Optional)
END
faker의 티어를 출력하는 프로시저
DECLARE
out_tier VARCHAR2(10);
BEGIN get_tier('faker',out_tier);
DBMS_OUTPUT.PUT_LINE(out_tier);
END;
수정
수정은 create or replace 구문을 사용하면 해당 프로시저명이 있다면 수정, 없다면 생성되게 됩니다.
CREATE OR REPLACE PROCEDURE GET_TIER(in_name IN VARCHAR2,out_tier OUT VARCHAR2)
IS
BEGIN
SELECT NAME INTO out_tier FROM SUMMONER_TB WHERE NAME = in_name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
out_tier:='NO_DATA_FOUND';
END get_tier;
삭제
DROP PROCEDURE 프로시저명;
GET_TIER 프로시저를 삭제할 때 아래와 같이 작성하면 됩니다.
DROP PROCEDURE GET_TIER;
'BACKEND > Oracle' 카테고리의 다른 글
Oracle 프로시저 예제 (0) | 2024.01.14 |
---|---|
Oracle에서 사용하는 조인 (0) | 2024.01.14 |
[Oracle] IO 오류 - The Network Adapter could not establish the connection 해결 (1) | 2024.01.13 |
[Oracle] 연습용 계정(scott)과 사원 테이블(emp) 만들기 (0) | 2024.01.08 |
Error 6 initializing SQL*Plus (0) | 2024.01.08 |