오늘도 열심히 공부를 위해 뭔가를 해볼까 하다가 오늘은 펑션을 해봐야겠다는 생각이 들었다.
나는 PL/SQL 이 너무나도 약한 그런 남자니까...
그래서 지난주 했던 order by decode 에서 사용했던 select 문에 적용할 날짜 펑션을 만들어보기로 했다.
CREATE OR REPLACE FUNCTION FN_GET_DATE_FORMAT (I_STR VARCHAR2) RETURN VARCHAR2 IS V_DATE VARCHAR2(10); BEGIN IF(LENGTH(I_STR) = 8) THEN SELECT TO_CHAR(TO_DATE(I_STR, 'YYYYMMDD'), 'YYYY.MM.DD') INTO V_DATE FROM DUAL; END IF; IF(LENGTH(I_STR) = 14) THEN SELECT TO_CHAR(TO_DATE(I_STR, 'YYYYMMDDHH24MISS'), 'YYYY.MM.DD') INTO V_DATE FROM DUAL; END IF; RETURN V_DATE; EXCEPTION WHEN OTHERS THEN RETURN '날짜 형식으로 변환할 수 없는 데이터입니다.'; END;
그런데 펑션의 생성을 위해 f5 를 누르면 결과창에는 분명히 '함수가 생성되었습니다.' 라고 나오는데
펑션의 스크립트를 보기 위해 f4 를 누르면 펑션이 정의되지 않았다고 나온다.
그리고 펑션을 사용하기 위해 쿼리에 펑션을 넣고 사용해봤더니 이번에는 에러 메세지가 나온다.
Caused by: java.sql.SQLException: ORA-06575: 패키지 또는 함수 FN_GET_DATE_FORMAT 은 부적당한 상태입니다.
이게 도대체 뭘까?
찾아보니 해당 에러 메세지는 펑션 생성시 제대로 컴파일이 되지 않았을 때 발생하는 에러라고 한다.
아니, 분명히 제대로 생성 되었다고 나오는 걸 결과창에서 확인 했는데?
그래서 혹시 몰라 다른 PL/SQL 생성 예제라고 되어 있는 소스를 인터넷 상에서 찾아와 생성해봤다.
내가 작성한 PL/SQL 은 에러겠지만 이건 아니겠지... 하는 마음으로.
그런데 마찬가지로 동일한 에러가 발생이 되는 것이었다.
뭘까뭘까 끙끙 앓다가 혹시나 해서 새로운 편집기를 생성할 때 PL/SQL 편집기로 새 창을 띄우고 해봤다.
아주 잘 된다. -_- 망할.
'개발 > 오라클' 카테고리의 다른 글
오라클 - 정규표현식 함수 REGEXP_SUBSTR() (0) | 2018.04.01 |
---|---|
오라클 - function (펑션) 만들기 기초문법. (0) | 2018.03.17 |
오라클 - 임의의 순서로 정렬하기 order by decode, order by case (6) | 2018.03.17 |
오라클 - 숫자 컬럼 기준 정렬이 이상하게 되는 경우 (0) | 2018.03.10 |
댓글