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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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 떨어지는부분이 

1
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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입