저는 오라클을 쓰면서 많은 프로시저(Procedure)를 사용하고 있습니다.
최근에는 프로시저가 많이 사용하지 않는 추세이긴 합니다.
왜 많이 쓰이는 않는지에 대한 포스팅은 이후에 진행하도록 하겠습니다.
우선 Procedure에 대해서 말씀드리겠습니다.
프로시저(Procedure)
특정 작업을 수행하는 PL/SQL BLOCK입니다.
매개 변수 및 반복적으로 사용할 수 있는 BLOCK이라고 생각하시면 됩니다.
생성
위에 예시는 PROCEDURE를 생성하는 간단한 예제입니다.
LINE별로 설명을 드리면
1 LINE CREATE OR REPLACE PROCEDURE 프로시저명 (
- 프로시저명으로 CREATE 한다라고 생각하면 됩니다.
2~5 LINE 매개변수 IN/OUT/INOUT 데이터 타입
- 매개변수를 통해 IN/OUT/INOUT을 통해 입출입을 정해주고, 데이터 타입(VARCHAR2, NUMBER 등)을 정해준다.
7 LINE 변수 데이터 타입;
- 프로시저에 맞게 변수랑 사용할 것들을 적어준다.
8 LINE BEGIN
- 프로시저 시작
9~12 LINE 실행되어야 될 내용
13 LINE EXCEPTION
- EXCEPTION이 실행되면 THROW 되는 곳
14 LINE WHEN OTHERS THEN
- OTHERS 예외는, 모든 예외를 포괄하는 예외명이며, 예외 처리의 마지막에 기술해야 한다 아니면 compile error가 된다.
15 LINE ROLLBACK;
- 프로시저 실행된 부분 전체 ROLLBACK
17 LINE RETURN
- 프로시저 전체 RETURN
실행
실행은 2가지로 구분이 된다.
1. 파라미터가 없거나, IN 파라미터만 있을 때 실행
CALL 프로시저명 (파라미터들);
EXEC 프로시저명 (파라미터들);
EXECUTE 프로시저명 (파라미터들);
예시)
CALL TESTTESTTEST(1,2,3);
EXEC TESTTESTTEST(1,2,3);
EXECUTE TESTTESTTEST(1,2,3);
2. 프로시저 매개변수가 IN/OUT 두 개 다 존재할 때 실행
위에 예제로 만들어진 IN/OUT 두 개 다 존재할 때의 프로시저를 실행한다고 할 때
아래오 같이 실행하면 된다.
DECLARE
A NUMBER;
BEGIN
TESTTESTTEST(1,2,3, A);
END;
'DB > ORACLE' 카테고리의 다른 글
[ORACLE]테이블(TABLE) 컬럼(COLUMN) Procedure, Function 검색&조회 (0) | 2021.08.10 |
---|---|
ORA-04031: unable to allocate nn bytes of shared memory (0) | 2021.06.17 |
[ORACLE] Instance & Service 용어 개념정리 (0) | 2021.06.03 |
ORA-04021: 객체의 잠금 대기중 시간이 초과됐습니다 (2) | 2021.04.14 |
오라클(ORACLE) 삭제(delete)하고 commit한 데이터 복구 (0) | 2021.03.26 |