본문 바로가기

IT/Oracle

PL/SQL Function 기본 구조

300x250

오라클 PL/SQL에서 Function의 기본 구조는 다음과 같습니다. Function은 값을 반환하는 PL/SQL 블록으로, 특정 작업을 수행하고 결과를 반환하는 데 사용됩니다.


기본 구조

CREATE OR REPLACE FUNCTION 함수이름 (
    매개변수명1 데이터타입 [IN | OUT | IN OUT],
    매개변수명2 데이터타입 [IN | OUT | IN OUT]
) RETURN 반환타입
IS
    -- 선언부 (변수, 상수, 커서 등)
    변수명 데이터타입;
BEGIN
    -- 실행부 (로직 처리)
    -- 반환값 지정
    RETURN 반환값;
EXCEPTION
    -- 예외 처리부
    WHEN OTHERS THEN
        -- 예외 처리 로직
END;
/

 

간단한 예제

두 수를 더하는 함수

CREATE OR REPLACE FUNCTION add_numbers(
    num1 IN NUMBER,
    num2 IN NUMBER
) RETURN NUMBER
IS
    result NUMBER; -- 결과를 저장할 변수
BEGIN
    result := num1 + num2; -- 두 수를 더함
    RETURN result; -- 결과 반환
END;
/

 

호출 예제

DECLARE
    sum_result NUMBER;
BEGIN
    -- 함수 호출
    sum_result := add_numbers(10, 20);
    DBMS_OUTPUT.PUT_LINE('Sum: ' || sum_result);
END;
/

예외 처리가 포함된 예제

숫자가 음수면 오류를 반환하는 함수

CREATE OR REPLACE FUNCTION check_positive(
    num IN NUMBER
) RETURN VARCHAR2
IS
BEGIN
    IF num < 0 THEN
        RAISE_APPLICATION_ERROR(-20001, 'Number must be positive');
    END IF;

    RETURN 'Positive Number';
EXCEPTION
    WHEN OTHERS THEN
        RETURN 'Error: ' || SQLERRM;
END;
/

 

호출 예제

DECLARE
    result_msg VARCHAR2(100);
BEGIN
    -- 양수 검사
    result_msg := check_positive(-5);
    DBMS_OUTPUT.PUT_LINE(result_msg);
END;
/

 

주요 포인트

  • 함수는 항상 값을 반환해야 합니다. RETURN 문이 필수입니다
  • 필요하면 DBMS_OUTPUT.PUT_LINE을 사용하여 디버깅 정보를 출력할 수 있습니다.
  • 함수의 의존 객체(테이블, 뷰 등)가 변경되면 함수가 유효하지 않을 수 있으니, 재컴파일해야 합니다.
    ALTER FUNCTION 함수이름 COMPILE;

관련 블로그

 

PL/SQL Function / Procedure 실행 오류 확인 방법

오라클에서 PL/SQL FUNCTION 또는 PROCEDURE가 실행 중 오류를 발생시키는 경우, 해당 실행 오류를 확인하는 방법은 다음과 같습니다:1. EXCEPTION 블록 사용 : 오라클 PL/SQL 블록에서 발생하는 실행 오류를

make2t.tistory.com

 

300x250