(2)PL/SQL 사용자 정의 함수

PL/SQL의 사용자 정의 함수 사용법


시작하기 전에

사용 교재 : 오라클SQL과 PL/SQL을 다루는 기술 (https://thebook.io/006696/)

예제 코드 : https://github.com/gilbutITbook/006696


SERVEROUTPUT 설정

PL/SQL 결과물을 보기 위해 아래의 실행문을 실행

SET SERVEROUTPUT ON;

PL/SQL 사용자 정의 함수

저장블록 - 컴파일을 거쳐 데이터베이스 내에 저장되어 재사용이 가능하다.

다른 프로그래밍 언어의 사용자 정의 함수처럼 사용 가능.


사용자 정의 함수 기본 구조

CREATE [OR REPLACE] FUNCTION 함수이름 (변수1, 변수2, ---)
	RETURN 데이터타입;

IS[AS]
	-- 변수, 상수 등 선언

BEGIN
	-- 실행부

	RETURN --반환값;

--[EXCEPTION - 예외처리]

END --[함수이름];
/
  • []는 생략 가능


사용자 정의 함수 호출법

-- 매개변수가 없는 함수
함수명
함수명()

-- 매개변수가 있는 함수
함수명(매개변수1, ...... , 매개변수n)


사용자 정의 함수 예제


  • 예제
    • 나머지를 반환하는 함수
      CREATE OR REPLACE FUNCTION my_mod(num1 NUMBER, num2 NUMBER)
          RETURN NUMBER -- 반환 데이터 타입 지정
      IS
          -- 변수 선언
          vn_remainder NUMBER := 0; -- 반환할 나머지
          vn_quotient NUMBER :=0; -- 몫
      BEGIN
          -- 수식 작성
          vn_quotient := FLOOR(num1/num2); -- 몫 구하기
          vn_remainder := num1-(num2 * vn_quotient); -- 나머지 구하기
            
          RETURN vn_remainder;
        
      END;
      /
    

    1


  • 예제2
    • 국가명을 반환하는 함수
      • null 처리 로직을 추가
CREATE OR REPLACE FUNCTION fn_get_country_name(p_country_id NUMBER)
    RETURN VARCHAR2
IS 
    vs_country_name countries.country_name%TYPE;
    vn_count NUMBER := 0;
BEGIN

    SELECT count(*)
    INTO vn_count
    FROM countries
    WHERE country_id = p_country_id;
    
    IF vn_count = 0 THEN
        vs_country_name := '국가없음';
    ELSE
        SELECT country_name
        INTO vs_country_name
        FROM countries
        WHERE country_id = p_country_id;
    END IF;
    
        RETURN vs_country_name;
END;
/

2






Categories:

Updated:

Leave a comment