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 |