본문 바로가기

개발/오라클

오라클 - 펑션(FUNCTION) 생성 복습!

오늘은 오라클 펑션 생성 복습 시간이다.

사실 저번 기초 문법과 크게 바뀐 것은 없지만 나름대로 약간의 변화를 줘봤다.

CREATE OR REPLACE FUNCTION FN_GET_DATE_2018_04_29(I_DIV VARCHAR2) RETURN VARCHAR2 
IS 
    V_DATE 					VARCHAR2(100); 
    USER_DEFINE_EXCEPTION	EXCEPTION; 
BEGIN 
    IF I_DIV = 'SYSDATE' THEN 
        SELECT SYSDATE 
          INTO V_DATE 
          FROM DUAL; 
    ELSIF I_DIV = 'YYYYMMDD' THEN 
        SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') 
          INTO V_DATE 
          FROM DUAL; 
    ELSIF I_DIV = 'YYYY-MM-DD' THEN 
        SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') 
          INTO V_DATE 
          FROM DUAL; 
    ELSE 
    	RAISE USER_DEFINE_EXCEPTION;
    END IF;  

    RETURN V_DATE; 
    
    EXCEPTION
    	WHEN USER_DEFINE_EXCEPTION THEN RAISE_APPLICATION_ERROR(-20001, '지정한 파라미터 외의 값이 들어왔습니다.');
        -- 에러코드는 20000~20999 사이의 값을 사용할 수 있다고 한다.
END; 

여기에서 중요한 것은 펑션, 프로시져에서의 ELSE IF 는 ELSIF 라는 구문을 사용한다는 점과

사용자 정의 예외 (USER_DEFINE_EXCEPTION) 를 발생시킬 때는 RAISE 라는 구문을 사용해서 발생시킨다는 것.

 

그리고 에러코드는 20,000~20,999 사이의 값을 사용할 수 있다는 점이다. 

그 외의 값을 지정하면 RANGE 어쩌고 하면서 범위값 에러가 발생한다.

 

그리고 오늘 알게 된건데 RETURN 과 BEGIN 사이의 변수 선언 지점의 IS 는 AS|IS 라고 한다.

왜 다른 블로그에는 IS 라고 되어 있을까 궁금했었는데 의외로 간단히 해결 ^^;