1. 프로시저(Procedure)란?
특정한 로직을 처리하기만 하고 결과 값을 반환하지는 않는 서브 프로그램
→ 테이블에서 데이터를 추출해 입맛에 맞게 조작하고 그 결과를 다른 테이블에 다시 저장하거나 갱신하는 일련의 처리를 할 때 주로 사용
2. PL/SQL 프로시저 생성
CREATE OR REPLACE PROCEDURE 프로시저 이름
(매개변수명1 [IN |OUT |IN OUT] 데이터타입[:=디폴트값],
매개변수명2 [IN |OUT |IN OUT] 데이터타입[:=디폴트값],
…
)
IS[AS]
변수, 상수 등 선언
BEGIN
실행부
[EXCEPTION
예외 처리부]
END [프로시저 이름];
* 매개변수에서 IN은 입력, OUT은 출력, IN OUT은 입력과 출력을 동시에 한다는 의미다. OUT 매개변수는 프로시저 내에서 로직 처리 후, 해당 매개변수에 값을 할당해 프로시저 호출 부분에서 이 값을 참조할 수 있다.
- 예제) 프로시저 MY_NEW_JOB_PRC
CREATE OR REPLACE PROCEDURE MY_NEW_JOB_PROC
(P_JOB_ID JOBS.JOB_ID%TYPE,
P_JOB_TITLE JObS.JOB_TITLE%TYPE,
P_MIN_SAL JOBS.MIN_SALARY%TYPE,
P_MAX_SAL JOBS.MAX_SALARY%TYPE)
IS
BEGIN
INSERT INTO JOBS (JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)
VALUES (P_JOB_ID, P_JOB_TITLE, P_MIN_SAL, P_MAX_SAL);
COMMIT;
END;
/
3. PL/SQL 프로시저 실행
EXECUTE 프로시저명(매개변수1 값, 매개변수2 값, … )
-- EXEC 프로시저명(매개변수1 값, 매개변수2 값, … )도 가능!
4. RETURN문
프로시저에서는 RETURN문을 만나면 이후 로직을 처리하지 않고 수행을 종료한다.
→ 반복문에서 루프를 빠져나가기 위해 EXIT을 사용하는 것과 유사하다.
참고문헌 : 홍형경(2015), 오라클 SQL과 PL/SQL을 다루는 기술, 길벗