함수
- 특정 기능들을 모듈화, 재사용할 수 있어서 복잡한 쿼리문을 간결하게 만듬
- 함수 사용이 쿼리 속도를 느리게 만드는 원인이 될 수 있으니 필요한 경우만 사용
- 호출한 곳으로 반드시 하나의 값을 리턴해야 하는 PL/SQL Stored Program
- 즉, PL/SQL 블록 내에서 RETURN문을 통해 반드시 값을 리턴
- 프로시저는 PL/SQL문으로 실행, 함수는 식의 일부로서 사용
- RETURN 절에 지정된 것과 동일한 데이터 타입으로 RETURN 값을 설정해야 함
- 함수 작성 시 권한 필요
- 자신의 스키마 : CREATE PROCEDURE 권한
- 다른 사용자의 스키마 : CREATE ANY PROCEDURE 권한
- 기본적으로 DML(INSERT/UPDATE/DELETE)문 사용 불가
함수 기본 문법
CREATE [OR REPLACE] FUNCTION function_name [(
argument...
)]
RETURN datatype -- 반환되는 값의 datatype
IS [AS]
[선언부]
BEGIN
[실행부 - PL/SQL Block]
[EXCEPTION]
[EXCEPTION 처리]
RETURN 변수; -- 리턴문 필수
END;
- [] : 대괄호 안의 구문은 생략 가능함을 의미
- OR_REPLACE : 함수생성 DDL 명령어 / 이미 존재하는 함수라면 기존 내용 지우고 재생성, 생략 가능
- function_name : 사용자 지정 함수명
- argument : 매개변수1, 매개변수2, 매개변수3 ... 매개변수 선언
- datatype : VARCHAR2, NUMBER, DATE 등 반환할 데이터 타입 지정
함수 작성 및 사용 예시
- 함수 작성 예시
CREATE OR REPLACE FUNCTION FN_GET_DEPT_NAME(
P_DEPT_NO IN VALCHAR2
) RETURN VARCHAR2
IS
V_TEST_NAME VARCHAR2(10);
BEGIN
SELECT DELP_NAME
INTO V_TEST_NAME
FROM DEPT
WHERE DEPT_NO = P_DEPT_NO;
RETURN V_TEST_NAME;
END;
- 함수 사용 예시
- SELECT 문에서 편하게 사용 가능
SELECT FN_GET_DEPT_NAME('01') FROM DUAL;'Study > Oracle' 카테고리의 다른 글
| PL/SQL_6 - 테이블 함수 (0) | 2021.05.18 |
|---|---|
| PL/SQL 기본_4 - 프로시저 (0) | 2021.05.10 |
| PL/SQL 기본_3 - 커서 (0) | 2021.05.10 |
| PL/SQL 기본_2 - 반복문과 제어문 (0) | 2021.05.10 |
| PL/SQL 기본_1 (0) | 2021.05.10 |