함수

  • 특정 기능들을 모듈화, 재사용할 수 있어서 복잡한 쿼리문을 간결하게 만듬
    • 함수 사용이 쿼리 속도를 느리게 만드는 원인이 될 수 있으니 필요한 경우만 사용
  • 호출한 곳으로 반드시 하나의 값을 리턴해야 하는 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

+ Recent posts