프로그래밍&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 |