oracle의 DBMS_OUTPUT.PUT_LINE return값이 출력되지 않는 문제 0 1 4,416

by 비타민 [DB 기타] [2019.04.26 17:19:06]


안녕하세요~

 

제목과 같이 아래와 같은 프로시저에서  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;

 

원인을 어디서 찾아야할지 난감합니다. 이런 경우 보신 적이 있으시거나 아시는 분 도움 부탁드립니다.

by 비타민 [2019.04.26 17:44:15]

자문자답입니다^^;

 

STE_MM_DATA값이 A 디비에서는 있었고, B디비에서는 없었네요.

2번째 호출 프로시저 값이 리턴되는것까진 확인을 했는데 막상 1번째 프로시저 값을 확인하지 않았네요^^;;

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