프로그래밍&IT/Oracle

[Oracle] 프로시저(Procedure) 생성 및 실행하기

sjoo 2021. 8. 7. 16:33

프로시저(Procedure)란?

- 오라클에서의 프로시저는 PL/SQL을 통해 생성된다. 

- 자주 사용하는 SQL을 프로시저로 만든 뒤 필요 할때마다 호출하여 작업 효율을 늘린다.

- 함수는 특정 연산을 수행한 뒤 결과 값을 반환하지만 프로시저는 특정한 로직을 처리하기만 하고 결과 값은 반환하지 않는 서브 프로그램이다.

 

프로시저(Procedure) 문법

CREATE [OR REPLACE] Procedure [Procedure_name](
 argument1 [mode] data_type1,
 argument2 [mode] data_type2,
 )
IS [AS]
...
BEGIN
...
EXCEPTION
...
END;
/

 

※ 인수 값을 프로시저명 뒤에 명시, 변수 선언은 IS 뒤에 명시, 동작은 BEGIN 뒤에 명시

 

<인수 타입 선언부분>

1. IN : 운영체제에서 프로시저로 전달

변수이름 IN VARCHAR2; => 인수 선언 시 byte 수 지정안함

변수이름 IN 테이블이름.컬럼명%TYPE;

변수이름 IN 테이블이름.컴럼명%TYPE := 값;

변수이름 IN 테이블이름.컬럼명%TYPE DEFAULT 값;

 

2. OUT : 프로시저에서 운영체제로 전달

변수이름 OUT VARCHAR2;

 

3. INOUT : 둘다 가능

변수이름 IN OUT VARCHAR2;

 

프로시저(Procedure) 생성

테이블에 데이터를 입력하는 프로시저를 생성한다.

CREATE OR REPLACE PROCEDURE EXPROC(
 IN_ID IN VARCHAR2,
 IN_NAME IN VARCHAR2,
 IN_DEPT IN VARCHAR2
 )
 IS
 P_SAL NUMBER := 600;
 BEGIN
 INSERT INTO EMP(ID,NAME,DEPT,SAL)
 VALUES(IN_ID,IN_NAME,IN_DEPT,P_SAL);
 COMMIT;
 
 END EXPROC;

 

프로시저(Procedure) 실행

EXEC EXPROC('EMP_011','정사원','기획팀');

 

프로시저를 실행하면 아래와 같이 EMP 테이블에 데이터가 입력된다.

ID NAME DEPT SAL
EMP_011 정사원 기획팀 600