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 내포 되지 않은 테이블 항목 으로 부터 행 을 가지고 올 수 없습니다
에러를 떨구고 프로시저가 돌아가지 않는데.. 고수님들 조언 부탁 드립니다.
SPLIT은 오라클에서 지원 하는 함수가 아닌 사용자 함수입니다.
다른 부분은 별 이상 없는 것 같고 해당 함수 확인이 필요할 것 같습니다.
해당 함수에 대해 오라클 9에서 실행 될 수 있는 환경으로 되어 있는지 실행해보세요.
SELECT * FROM TABLE(SPLIT('1,2,3,4,5,6,7', ','))