안녕하세요 . 프로시저 질문 2번째 입니다. 0 1 1,867

by 요타바이트 [Oracle 기초] [2014.09.03 18:19:23]


PROCEDURE DELETELOC (  
                                      P_LAYTKY IN VARCHAR2  
                                     ,P_LBUILD IN VARCHAR2  
                                     ,P_LSTORY IN VARCHAR2  
                                     ,P_WAREKY IN VARCHAR2  
                                     ,P_STOKKY IN VARCHAR2  
                                     ,P_ZONEKY IN VARCHAR2  
                                     ,L_RESULT OUT WOSRECCURTYP)  
IS 
        V_ALTZONE   VARCHAR2(3000);  
        V_ERRNUM    VARCHAR(255);  
        V_ERRMSG    VARCHAR(255);  
BEGIN 
    BEGIN 
           
        UPDATE LAYOI
           SET INDBZL = 'D' 
         WHERE LAYTKY = P_LAYTKY  
           AND BLOCTY NOT IN ('30','39');  
        COMMIT;  
   
        UPDATE LAYOI
           SET INDBZL = 'D' 
         WHERE LAYTKY = P_LAYTKY  
           AND LBLOCK IN (  
                SELECT LBLOCK  
                  FROM LOCBL  
                 WHERE STOKKY = P_STOKKY  
                   AND WAREKY = P_WAREKY  
                   --AND ZONEKY IN (V_ALTZONE)  
                   AND ZONEKY IN ( SELECT * FROM table(split(REPLACE(P_ZONEKY,'::', ''),',') ) )  
            );  
        COMMIT;  
           
        OPEN L_RESULT for 
            SELECT '0' FROM DUAL;  
    EXCEPTION                          
    WHEN OTHERS THEN                         
        ROLLBACK;  
        OPEN L_RESULT for 
            SELECT '-1' FROM DUAL;  
        V_ERRNUM := SQLCODE;                          
        V_ERRMSG := substr(SQLERRM, 1, 255);  
        raise_application_error(-20002, v_errmsg);                          
    END;  
    
    END DELETELOC;

 

 저번에 이프로시저에 대해 물어보았는데 Error 떨어지는부분이 



raise_application_error(-20002, v_errmsg) 이 함수 입니다 .단순히 로그를 남기는 함수인데 , 지우 고 실행하면 에러는 없네요..

9I 하고 11G 하고 버젼 차이때문에 그런것같은데.. 11g 를 9I 환경에 맞게 셋팅하려면 어떤것을 참조하면서 해야 할까요 ? 

항상 좋은 답변 감사드립니다. ( __ ) 

by 마농 [2014.09.03 18:43:00]

[단순히 로그를 남기는 함수인데 , 지우고 실행하면 에러는 없네요.]
이 함수는 로그를 남기는 함수가 아니라 에러를 발생시키는 함수입니다.
당연히 넣으면 에러나고 빼면 에러 안나겠죠.


[11G에서는 에러 안나는데 9i에서만 에러 난다면?]
환경이 다르니..
11g 에선 아예 Exception 절로 빠지질 않은 듯 하고
9i 에선 Exception 절로 빠져서 해당 에러가 발생된 듯 하네요.

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