오라클 function 생성시 오류 질문 0 2 1,589

by 끼요르힝 오라클 함수 function [2018.12.19 19:14:10]



CREATE OR REPLACE function FN_GET_ENTER_DATE(arg_emp_cd varchar2)
    return varchar2
AS
    var_enter_date varchar2(8);
    var_dpt_cd  char(1);
    var_year varchar2(4);

begin

    select to_char(sysdate, 'YYYY') 
      into var_year 
      from dual;

    select substr(dpt_cd,1,1) 
      into var_dpt_cd 
      from table_A
     where emp_cd = arg_emp_cd;

    if var_dpt_cd = 'X' THEN
        select tem_from 
          into var_enter_date 
          from table_B
         where emp_cd = arg_emp_cd;
    else
        select max(enter_date)
          into var_enter_date
          from table_A
         where emp_cd like substr(arg_emp_cd,1,14) || '%'
           and flag = 'N'
           and substr(emp_cd,1,14) in (select substr(emp_cd,1,14)
                                         from table_A
                                        where retire_date is null
                                           or retire_date = ''
                                           or retire_date >= var_year || '1231');
    End IF;

    return var_enter_date;

    exception
        when no_data_found then
            return null;
        when others then
            return null;

end;

위와같이 사용자함수를 작성했는데,

심볼 ""를 만났습니다 다음 중 하나가 기대될때: return

라는 오류메세지가 나옵니다 ㅠㅠㅠㅠㅠ

원인이 뭔지 도대체 모르겠어요 ㅠㅠㅠ

혹시나 아시는 분 계시면 답변 부탁드립니다...

by 마농 [2018.12.20 13:05:51]

1. from dual 사용한 부분은 dual 없이 바로 대입 가능하구요.
2. = '' 비교부분은 오라클의 경우 불필요한 조건입니다. 빼도 됩니다.
3. 14자리 잘라서 비교하는 부분은 왜 그렇게 하는건지? 이유가 있는 건가요?
다만 위 언급한 사항들은 개선 차원에서 권고해 드리는 것일 뿐.
오류와는 무관합니다. 딱히 문법 오류는 보이지 않네요.


by 야신 [2018.12.20 13:15:15]

유사하게 만들어 컴파일 해봤는데 해당 에러가 나지 않습니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입