DB/SQL

OBJECT - FUNCTION

제주니어 2022. 9. 12. 19:23

FUNCTION

  • FUNCTION은 오라클에서 제공하는 객체로 PROCEDURE와 거의 유사한 용도로 사용하지만 PROCEDURE와 다르게 OUT 변수를 사용하지 않아도 실행 결과를 되돌려 받을 수 있다. (RETURN)****

FUNCTION 생성

  • FUNCTION은 CREATE 구문을 사용해서 생성한다.
  • FUNCTION은 PROCEDURE와 다르게 RETURN 구문이 추가된다.
CREATE OR REPLACE FUNCTION 함수명
( 
    매개변수 1 타입,
    매개변수 2 타입,
    ... 
)
RETURN 데이터 타입
IS [AS]
    선언부
BEGIN
    실행부
    
    RETURN 반환값;
[EXCEPTION
    예외 처리부]
END [함수명];
/

 

-- 사번을 입력받아 해당 사원의 보너스를 포함하는 연봉을 계산하고 리턴하는 함수 생성
CREATE FUNCTION BONUS_CALC 
(
    V_EMP_ID EMPLOYEE.EMP_ID%TYPE
)

RETURN NUMBER 
IS 
    SALARY EMPLOYEE.SALARY%TYPE;
    BONUS EMPLOYEE.BONUS%TYPE;
BEGIN
    SELECT SALARY, NVL(BONUS, 0)
    INTO SALARY, BONUS
    FROM EMPLOYEE
    WHERE EMP_ID = V_EMP_ID;
    
    RETURN (SALARY + (SALARY * BONUS)) * 12;
END;
/
-- 함수 호출 1) 
SELECT BONUS_CALC('200') FROM DUAL;

-- 함수 호출 2) 바인드 함수 호출 후 대입하여 호출
VAR VAR_BONUS_CALC NUMBER;
EXEC :VAR_BONUS_CALC := BONUS_CALC('200');

-- EMPLOYEE 테이블에서 전체 사원의 사번, 직원명, 급여, 보너스, 보너스를 포함한 연봉을 조회 (BONUS_CALC 함수 사용)
SELECT EMP_ID, EMP_NAME, SALARY, BONUS, BONUS_CALC(EMP_ID)
FROM EMPLOYEE;

FUNCTION 삭제

  • FUNCTION 삭제 시 DROP 구문을 사용해서 삭제한다.
DROP FUNCTION 함수명;

'DB > SQL' 카테고리의 다른 글

OBJECT - TRIGGER  (0) 2022.09.14
OBJECT - CURSOR  (0) 2022.09.13
OBJECT - PROCEDURE  (0) 2022.09.11
OBJECT - SYNONYM  (0) 2022.09.10
OBJECT - INDEX  (0) 2022.09.09