오늘은 오라클 펑션 생성 복습 시간이다.
사실 저번 기초 문법과 크게 바뀐 것은 없지만 나름대로 약간의 변화를 줘봤다.
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 라고 되어 있을까 궁금했었는데 의외로 간단히 해결 ^^;
'개발 > 오라클' 카테고리의 다른 글
오라클 - CONNECT BY LEVEL (0) | 2018.04.14 |
---|---|
오라클 - 계층형 쿼리 START WITH... CONNECT BY PRIOR (0) | 2018.04.14 |
오라클 - 문자열을 자릿수만큼 채워주는 LPAD(), RPAD() 함수 (0) | 2018.04.14 |
오라클 - 정규표현식 함수 REGEXP_REPLACE() (0) | 2018.04.01 |
댓글