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

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


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