프로시저 질문입니다... 0 1 4,719

by 요타바이트 [2014.09.01 19:41:43]


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;

위 프로시저에서 , 프로시저에 값이 제대로 들어가는데 , 11G 에서는 에러가 없이 잘 돌아가는데

9I 에서는 ORA-22905 내포 되지 않은 테이블 항목 으로 부터 행 을 가지고 올 수 없습니다  

에러를 떨구고 프로시저가 돌아가지 않는데.. 고수님들 조언 부탁 드립니다.

 

 

by 아발란체 [2014.09.01 20:51:45]

SPLIT은 오라클에서 지원 하는 함수가 아닌 사용자 함수입니다.

다른 부분은 별 이상 없는 것 같고 해당 함수 확인이 필요할 것 같습니다.

해당 함수에 대해 오라클 9에서 실행 될 수 있는 환경으로 되어 있는지 실행해보세요.

SELECT * FROM TABLE(SPLIT('1,2,3,4,5,6,7', ','))

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