프로시저란?
절차형 SQL 을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어로, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행한다.
프로시저는 데이터베이스에 저장되어 수행되기 때문에 스토어드(Stored) 프로시저라고도 불린다.
프로시저는 시스템의 일일 마감 작업, 일괄(Batch) 작업 등에 주로 사용된다.
DECLARE
BEGIN
CONTROL
SQL
EXCEPTION
TRANSACTION
END
DECLARE
프로시저의 명칭, 변수, 인수, 데이터 타입을 정의하는 선언부
BEGIN ~ END
CONTROL : 조건문 또는 반복문이 삽입되어 순차적으로 처리된다.
SQL : DML, DCL이 삽입되어 데이터 관리를 위한 조회, 추가, 수정, 삭제 작업을 수행한다.
EXCEPTION : 예외가 발생하면 이를 처리하는 방법을 정의한다.
TRANSACTION : 수행된 데이터 작업들을 DB에 적용할지 취소할지를 결정하는 처리부이다.
CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터)
IS
[지역변수 선언]
BEGIN
프로시저 BODY;
END;
OR REPLACE : 선택적인 예약어이다. 이 예약어를 사용하면 동일한 프로시저 이름이 이미 존재하는 경우, 기존의 프로시저를 대체할 수 있다.
파라미터
IN : 호출 프로그램이 프로시저에게 값을 전달할 때 지정한다. (파라미터의 성격 → 인자값)
OUT : 프로시저가 호출 프로그램에게 값을 반환할 때 지정한다. (파라미터의 성격 → 리턴값)
INOUT : 호출 프로그램이 프로시저에게 값을 전달하고, 프로시저 실행 후 호출 프로그램에 값을 반환할 때 지정한다.
매개변수명 : 호출 프로그램으로부터 전달받은 값을 저장할 변수이 이름을 지정한다.
자료형 : 변수의 자료형을 지정한다.
프로시저 BODY
BEGIN과 END 사이에는 적어도 하나의 SQL 문이 있어야 한다.
EXECUTE 프로시저명;
EXEC 프러시저명;
CALL 프로시저명;
DROP PROCEDURE 프로시저명;