Programming/Database
[Oracle] Function
dev?
2025. 4. 29. 13:51
반응형
- Oracle Database 안에 만드는 **함수(Function)**입니다.
- 입력값을 받아서 계산하거나 결과를 리턴하는 프로시저블한 객체입니다.
- SQL문 안에서도 사용할 수 있고, 다른 프로시저나 트리거에서도 호출할 수 있습니다.
1. 기본 구조
CREATE OR REPLACE FUNCTION 함수명 (파라미터명 데이터타입, ...)
RETURN 반환타입
IS
-- 변수 선언부
BEGIN
-- 실행 로직
RETURN 반환값;
END;
2. 예제
1) 간단한 숫자 제곱 함수
CREATE OR REPLACE FUNCTION get_square (p_num IN NUMBER)
RETURN NUMBER
IS
BEGIN
RETURN p_num * p_num;
END;
사용법:
SELECT get_square(4) FROM dual;
-- 결과: 16
3. 주요 특징
항목 | 설명 |
CREATE OR REPLACE | 이미 있으면 덮어쓰고, 없으면 새로 만듦 |
IN / OUT | 기본은 IN (입력값만), 일반 함수는 리턴용이라 보통 IN만 씀 |
RETURN | 반드시 반환값이 있어야 함 |
IS | 선언부 시작 |
BEGIN ... END | 실행부 |
dual | 결과를 바로 조회할 때 사용하는 가상 테이블 |
4. 함수 삭제
DROP FUNCTION 함수명;
5. 주의사항
- 함수는 반드시 RETURN 문이 있어야 함.
- SQL 안에서 쓸 때는 SELECT 함수명() 형태로 사용.
- DML(INSERT, UPDATE, DELETE) 안에서는 제한이 있음 (부작용 없는 함수만 권장).