안녕하세요~
제목과 같이 아래와 같은 프로시저에서 P_STD_PARAMS가 리턴되게 되는데
*** p_std_params IN OUT NOCOPY IQSYS.hproc_std_obj
IQCSM.SP_PLM_FULL_CREATE ( '201904', P_STD_PARAMS );
DBMS_OUTPUT.PUT_LINE(p_std_params.sql_code ||', '|| p_std_params.sql_errm ||', '|| p_std_params.msg_data);
A라는 디비에서는 아래와 같이 출력되고,
0, ORA-0000: normal, successful completion, [보고지표 생성에러]
해당월에 집계할 DATA가 존재하지 않습니다!
B라는 디비에서는 아무것도 출력되지 않은채 호출한 최초의 ,, 만 출력이 됩니다.
둘의 디비 구조가 같고, 프로시저 select 값이 둘다 없어
"[보고지표 생성에러]
해당월에 집계할 DATA가 존재하지 않습니다!" 가 출력되어야하는데...
A디비에서만 출력이 되네요...
참고로 SP_PLM_FULL_CREATE 에서는 이렇게 세팅을 하였습니다.
p_std_params.msg_data := '[보고지표 생성에러]
'|| p_std_params.msg_data;
이 프로시저는 SP_PLM_TOT_CREATE 에서 p_std_params.msg_data 값을 리턴받아 오게 되고요.
데이터 받아오는게 없더라도 '[보고지표 생성에러]' 이게 나와야하는데...
※ SP_PLM_TOT_CREATE에서는 리턴값이 나오네요. '해당월에 집계할 DATA가 존재하지 않습니다!'이라고...
근데 SP_PLM_FULL_CREATE 여기서만 나오지 않네요.
여기서 output 구문은
LOOP FETCH STE_MM_DATA INTO l_dept_cd; -- 코드 EXIT WHEN STE_MM_DATA%NOTFOUND; BEGIN dbms_output.put_line('all 시작 -->'||l_dept_cd||'---'||p_exec_yymm||'--'||l_return ); IQCSM.SP_PLM_TOT_CREATE(l_dept_cd, p_exec_yymm,l_return, p_std_params); dbms_output.put_line('all error -->'||l_dept_cd||'---'||p_exec_yymm||'--'||p_std_params.msg_data ); IF p_std_params.status <> 'S' THEN p_std_params.status := 'E'; p_std_params.msg_data := '[보고지표 생성에러] '|| p_std_params.msg_data; END IF; END; END LOOP;
원인을 어디서 찾아야할지 난감합니다. 이런 경우 보신 적이 있으시거나 아시는 분 도움 부탁드립니다.