개발공작소
article thumbnail
728x90

 

 

 

예전에 Postgresql에서 프로시저에 대해 정리를 해보았는데, 오라클도 한번 정리해보려고 한다.

프로시저란 쉽게 말해 자주 사용하는 쿼리를 미리 저장해놓았다가, 필요할 때마다 호출 하는 함수라고 생각하면 된다.

저장 프로시저라고도 한다.

 

오늘은 오라클에서 프로시저를 생성하고 호출하는 것만 해보려고 한다.

 

환경 : Oracle 11g , DBeaver 툴 사용

( ※ 편하려고 DBeaver 툴 쓰는거니, sqlplus를 통해 직접 명령어를 입력해줘도 됨.. )

 

 

Procedures/Functions

 

글 쓰면서 알게 된 사실인데, Postgresql에는 Functions만 있고

Oracle은 Procedures와 Functions가 따로 있다. 신기하다. DBeaver가 알아서 그런 것도 캐치하는 듯... 

 

아무튼 오늘은 프로시저를 만들거니까. Procedures를 통해 우클릭 해보자.

 

 

1. 프로시저 생성

Procedures -> Create New Procedure

 

 

 

프로시저명 및 타입 지정

 

나는 mochi_pro라고 명명하고였고, 당연히 프로시저 타입으로 지정하였다. 확인 버튼을 누르도록 하자.

그럼 아래와 같이 mochi_pro 라는 프로시저의 기본틀이 생성된다.

 

 

 

 

만약 나는 DBeaver 안쓰는데, 그냥 sqlplus을 통해서 바로 만들건데 라는 사람은 아래 틀을 가져다가 자기가 원하는 코드를 작성하도록 하자.

 

 

프로시저 생성(수정) 문법

CREATE OR REPLACE PROCEDURE [프로시저명]([인자])
IS
BEGIN
END [프로시저명];

-- 인자는 [변수명 in 데이터타입]과 같이 받는다. 아래 샘플 보면 이해됨

 

 

샘플

CREATE OR REPLACE PROCEDURE MOCHI_PRO(bookId IN NUMBER, bookNm IN varchar2)
IS
BEGIN
		UPDATE mochi.RECURSIVE_BOOK a
			SET a.BOOK_NAME = bookNm 
			WHERE a.BOOK_ID = bookId;
END MOCHI_PRO;

 

update문은 다들 알거 같으니 따로 설명하지 않겠다. 그냥 인자 받아서 업데이트 때리는거니까.

Postgresql과 인자를 받는 방식이 조금 다른데, 다음과 같이 인자를 받는다.

 

'bookId in number' 라는 구문은 인자로 number 타입의 변수(bookId)를 받겠다는 의미
'bookNm in varchar2' 라는 구문은 인자로 varchar2 타입의 변수(bookNm)를 받겠다는 의미

 

 

 

2. 프로시저 호출

 

기본문법

EXEC [프로시저명]; 
또는
CALL [프로시저명];

 

샘플

CALL MOCHI.MOCHI_PRO(111, '도깨비손님');

 

 

call 명령어로 MOCHI_PRO 프로시저 호출

 

변경된 값 확인

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!