🍞 함수

개요

  • 개념
    • 매개 변수를 받을 수 있고, 반복해서 사용할 수 있는 이름이 있는 PL/SQL 블록
    • return 값이 있음
  • 용도
    • 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL 블록을 DB에 저장하기 위해 생성
  • 프로시저와의 차이점 및 특징
    • 결과값을 return
    • 대부분 구성이 프로시저와 유사하지만, IN 파라미터만 사용 가능
    • 리턴될 값의 데이터 타입을 RETURN 문에 선언
    • PL/SQL 블록 내에서 RETURN문을 통해 반드시 값을 반환해야 함


형식

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


CREATE [OR REPLACE] FUNCTION function name
    [(argument..)]
    RETURN datatype    -- 반환되는 값의 datatype
IS
    [변수 선언]
BEGIN
    [PL/SQL Block]
    -- PL/SQL 블록에는 적어도 한 개의 RETURN 문이 있어야 함
END;


🍞 함수의 생성과 실행

  • 생성
    • CREATE OR REPLACE 구문 사용하여 생성
    • 함수 끝마칠 땐 / 지정
  • 실행
    • 함수의 리턴값을 저장할 변수 선언
    • EXECUTE: 변수명 := 함수명
    • PRINT 변수명
  • 함수 에러 검사
    • SHOW ERROR
  • 삭제
    • DROP FUNCTION 함수명


🍞 함수 예

생성

CREATE OR REPLACE FUNCTION FC_update_sal
    (v_empno IN NUMBER)
    RETURN NUMBER
IS
    v_sal emp.sal%type;
BEGIN
    UPDATE emp
    SET sal = sal * 1.1
    WHERE empno = v_empno;
    COMMIT;

    SELECT sal
    INTO v_sal
    FROM emp
    WHERE empno = v_empno;

    RETURN v_sal;
END;
/

-- 함수가 생성되었습니다.


에러 검사

SHOW ERROR
-- No errors


실행

> VAR salary NUMBER;
> EXECUTE: salary := FC_update_sal(7900);
> PRINT salary;

/*
SALARY
-------
1045
*/