[pl/sql] 날짜 유효성 검사
입력된 날짜의 유효성을 exception 처리를 통해 검사한다.
CREATE OR REPLACE FUNCTION FUNCTION_TEST( PI_STR_YMD IN VARCHAR2) RETURN VARCHAR2 IS L_YMD DATE; PO_ERRMSG VARCHAR2(400); E_INVALID_MONTH EXCEPTION; E_INVALID_DAY EXCEPTION; PRAGMA EXCEPTION_INIT(E_INVALID_MONTH, -1843); PRAGMA EXCEPTION_INIT(E_INVALID_DAY, -1847); BEGIN BEGIN L_YMD := TO_DATE(PI_STR_YMD, 'YYYYMMDD'); EXCEPTION WHEN E_INVALID_MONTH THEN PO_ERRMSG := '월이 맞지 않습니다.'; RETURN PO_ERRMSG; WHEN E_INVALID_DAY THEN PO_ERRMSG := '일이 맞지 않습니다.'; RETURN PO_ERRMSG; WHEN OTHERS THEN PO_ERRMSG := '입력된 날짜가 뭔가 이상합니다.'; RETURN PO_ERRMSG; END; PO_ERRMSG := '유효한 날짜입니다.'; RETURN PO_ERRMSG; END; / -- 결과 확인 SELECT '20152001' YMD, FUNCTION_TEST('20152001') RESULT FROM DUAL UNION ALL SELECT '20150132' YMD, FUNCTION_TEST('20150132') RESULT FROM DUAL UNION ALL SELECT '10001131' YMD, FUNCTION_TEST('10001131') RESULT FROM DUAL; YMD RESULT -------- -------------------------------------------------- 20152001 월이 맞지 않습니다. 20150132 일이 맞지 않습니다. 10001131 입력된 날짜가 뭔가 이상합니다. 3 rows selected.
최신 댓글