🍯 프로시저

개요

  • 매개 변수를 받을 수 있고, 반복해서 사용할 수 있는 이름이 있는 PL/SQL 블록
  • return 값이 없음
  • 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL 블록을 DB에 저장하기 위해 생성


형식

  • CREATE OR REPLACE 구문을 이용하여 생성
  • IS로 PL/SQL 블록 시작
  • LOCAL 변수는 ISBEGIN 사이에 선언


CREATE [OR REPLACE] procedure name
    [(IN argument
      OUT argument
      IN OUT argument)]  -- 매개변수
IS
    [변수/커서 선언]
BEGIN    -- 필수
    [PL/SQL Block]  
        -- SQL 문장, PL/SQL 제어 문장

    [EXCEPTION]   -- 선택
        -- error가 발생할 때 수행하는 문장
END;     -- 필수


🍯 파라미터

특징

  • 실행 환경과 프로그램 사이에 값을 주고 받는 역할
  • 블록 안에서의 변수와 똑같이 일시적으로 값을 저장하는 역할


종류

  • IN
    • 실행환경에서 프로그램으로 값 전달
    • 상수, 수식, 또는 초기화된 변수 사용
    • default, IN 키워드 생략 가능
  • OUT
    • 프로그램으로부터 실행환경으로 값 전달
    • 초기화되지 않은 변수를 매개변수로 사용
    • 반드시 지정
  • INOUT
    • 실행환경에서 프로그램으로 값을 전달하고, 다시 프로그램으로부터 실행환경으로 변경된 값 전달
    • 초기화된 변수 사용
    • 반드시 지정


🍯 프로시저의 생성과 실행

  • 생성
    • CREATE OR REPLACE 구문을 이용하여 생성
    • 프로시저를 끝마칠 때는 / 지정
  • 실행
    • EXECUTE 프로시저명;
  • 프로시저 에러 검사
    • SHOW ERROR
  • 삭제
    • DROP PROCEDURE 프로시저명


🍯 프로시저 예

생성

CREATE OR REPLACE PROCEDURE update_sal
    /* IN Parameter*/
    (v_empno IN NUMBER)
IS
BEGIN
    UPDATE emp
    SET sal = sal * 1.1
    WHERE empno = v_empno;

    COMMIT;
END;
/


에러 검사

SHOW ERROR
-- No errors.


실행

EXECUTE update_sal(7369);
-- PL/SQL 처리가 정상적으로 완료되었습니다.