본문 바로가기
프로그래밍 언어/SQL

프로시저(Procedure)

by 진진리 2023. 9. 15.
728x90
  • 프로시저: 절차형 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어

호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행

 

  • 프로시저 구성도

- DECLARE: 프로시저의 명칭, 변수, 인수, 데이터 타입을 정의하는 선언부

- BEGIN / END: 프로시저의 시작과 종료 의미

- CONTROL: 조건문, 반복문이 순차적으로 처리됨

- SQL: DML, DCL이 삽입

- EXCEPTION: BEGIN ~ END 안에서 예외가 발생하면 이를 처리하는 방법을 정의

- TRANSACTION: 수행된 데이터 작업들을 DB에 적용할지 취소할지를 결정


  • 프로시저 생성

CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터)

[지역변수 선언]

BEGIN

    프로시저 BODY;

END;

 

// OR REPLACE: 동일한 이름이 존재하면 대체

// 파라미터: 매개변수명 + IN | OUT | INOUT + 자료형

// 지역변수 선언 예약어 IS

// 프로시저 BODY에는 적어도 하나의 SQL문이 있어야 함

 

CREATE OR REPLACE PROCEDURE emp_change_s(i_사원번호 IN INT)
IS
BEGIN
  UPDATE 급여 SET 지급방식='S' WHERE 사원번호=i_사원번호;
  EXCEPTION
      WHEN PROGRAN_ERROR THEN
          ROLLBACK;
  COMMIT;
END;

 

 

  • 프로시저 실행

EXECUTE 프로시저명;

EXEC 프로시저명;

CALL 프로시저명;

 

 

  • 프로시저 제거

DROP PROCEDURE 프로시저명;