WORK/DB

오라클 function 생성하기

im 수캥이 2018. 11. 30. 10:15


오라클 function 만들기 예제


아래 두개의 테이블을 이용해 function 을 만들어 보자.


1. 사용자 테이블

SELECT

  USER_ID

, USER_NAME

, AREA_CODE  --  지역코드

, DEL_FLAG

FROM USER_INFO



2. 지역정보

SELECT 

  AREA_CODE

, AREA_NAME

FROM AREA_INFO



-- FUNCTION 선언문

create or replace FUNCTION FN_RTN_AREA (P_USER_ID IN VARCHAR2 )

RETURN VARCHAR2


-- 변수 선언문

V_AREA_NAME VARCHAR2(10 CHAR);

V_AREA_CODE VARCHAR2(10 CHAR);


-- SELECT 된 값을 변수에 담는다.

SELECT  

       AREA_NAME

     , AREA_CODE

INTO 

        V_AREA_NAME

       , V_AREA_CODE 

FROM USER_INFO A INNER JOIN AREA_INFO B ON A.AREA_CODE   = B.AREA_CODE  

WHERE 1 = 1

AND A.USER_ID = P_USER_ID 

AND A.DEL_FLAG = 'N'

;


RETURN V_AREA_NAME;

EXCEPTION WHEN OTHERS THEN RETURN 'N';

END;



=================== 여기까지 했으면 지역명을 RETURN 하는 FUNCTION 이 생성된다.


여기서 IF문을 추가해 보자.



-- FUNCTION 선언문

create or replace FUNCTION FN_RTN_AREA (P_USER_ID IN VARCHAR2 )

RETURN VARCHAR2


-- 변수 선언문

V_AREA_NAME VARCHAR2(10 CHAR);

V_AREA_CODE VARCHAR2(10 CHAR);


-- SELECT 된 값을 변수에 담는다.

SELECT  

       AREA_NAME

     , AREA_CODE

INTO 

        V_AREA_NAME

       , V_AREA_CODE 

FROM USER_INFO A INNER JOIN AREA_INFO B ON A.AREA_CODE   = B.AREA_CODE  

WHERE 1 = 1

AND A.USER_ID = P_USER_ID 

AND A.DEL_FLAG = 'N'

;


-- IF문 추가

IF V_AREA_CODE = '0001'

THEN V_AREA_NAME  = '서울'

      ELSE V_AREA_NAME  = '제주'

END IF 

;


IF V_AREA_CODE = '0002'

THEN V_AREA_NAME  = '경기'

      ELSE V_AREA_NAME  = '강원'

END IF 

;


RETURN V_AREA_NAME;

EXCEPTION WHEN OTHERS THEN RETURN '';

END;




예를들어 설명한거라 구조가 조금 이상해도 응용해서 쓰시면 될거 같습니다.


'WORK > DB' 카테고리의 다른 글

오라클 SELECT 결과값으로 UPDATE 하기  (0) 2018.12.05
오라클 리스트 누적 합계 구하기  (0) 2018.12.03
mysql 테이블 생성 및 코멘트 추가  (0) 2018.11.26
MYSQL 조건문  (0) 2018.11.23
오라클 MERGE 문장  (0) 2018.10.16