오라클 펑션 작성 시 오류 0 3 1,089

by nodeLosck [Oracle 기초] 심볼 하나가 기대될 때 오라클 펑션 함수 [2018.02.09 10:46:03]


안녕하세요 

아래 쿼리로 함수를 작성할려고하는데 

PLS-00103: 심볼 "RETURN"를 만났습니다 다음 중 하나가 기대될 때: then and
   or

오류가 나옵니다 . 

무슨 이유인지 알고싶습니다. 감사합니다


CREATE OR REPLACE FUNCTION GET_REGSSD (REGNO IN VARCHAR2)

    RETURN VARCHAR2
IS
    V_NO                          VARCHAR(500) := '';
     
BEGIN
    V_NO := REGNO;

    IF  V_NO IS NULL 
    RETURN V_NO ='*******00*';  
    END IF;
    
    IF V_NO IS NOT NULL 
        SELECT  REPLACE(WMSYS.WM_CONCAT('*******'||SUBSTR(REG_SSD,-3,2)||'*'),',''') AS V_NO   FROM (
                                 SELECT lv
                             , REGEXP_SUBSTR(REPLACE(V_NO,'-',''), '[^;]+', 1,LV) AS REG_SSD  
                          
                        FROM DUAL
                           , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 99)
                          
                        WHERE lv <= LENGTH(V_NO) - LENGTH(REPLACE(V_NO, ';')) + 1
                        );
    
          RETURN V_NO;    
    END IF;
    
  
END;
 

 

by 우리집아찌 [2018.02.09 11:28:28]

리턴을 IF문 밖에 해주셔야죠


by 마농 [2018.02.09 11:37:37]

1. IF 문에 THEN 이 없음.
   - 변경전 : IF  V_NO IS NULL
   - 변경후 : IF  V_NO IS NULL THEN
2. RETURN 문과 대입식이 섞여 있음.
   - 변경전 : RETURN V_NO ='*******00*';
   - 변경후 : RETURN '*******00*';
3. SELECT 절에 INTO 가 없음
   - 변경전 : SELECT ~ FROM ~
   - 변경후 : SELECT ~ INTO V_NO FROM ~
4. Replace 가 이상함?
   - REPLACE( wm_concat(...) ,',''')


by nodeLosck [2018.02.09 13:15:34]

답변감사합니다 ^^

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