아침에 자동으로 도는 프로시저가 있는데요
이게 새벽에 돌아갑니다.
출근 전에요
그런데 이때 도는 프로시저가 문제가 있습니다.
구조는
CREATE OR REPLACE PROCEDURE proc_11
is
변수선언
cursor c_11 is
select ~;
begin
open c_11;
loop
fetch c_11 into v_1, v_2;
exit when c_11%notfound;
begin
처리문
end;
end loop;
close c_11;
end;
요러한 구조로 되어있습니다.
단순히 커서에 데이터를 select 해서 처리를 하는 프로시저인데요 이게 좀 황당한게
새벽에 돌때 커서에서 select가 안됩니다. ㅠㅠ
새벽시간데 일정 차수로 들어오는건데...
1시에 1차, 4시에 2차 7시에 3차 이런식으로 data를 잘 가져옵니다.
그런데 4시와 7시 사이 2차수로 select를 하면 커서로 데이터가 안 들어옵니다.
프로시저 log 이력에서 에러메세지같은건 없구요
그런데 아침에 8시에 출근해서 select 하면 커서로 데이터가 잡힙니다...
분명 매일 도는 프로시저인데... 가끔 안도니... 미치겠네요..
혹시 커서에서 가끔 안 잡히는 이유에 대해서 알고 계시는분 계신가요..ㅠ?
추가 내용입니다.
PROCEDURE PROC_MC_ZSD003_OLD_T
IS
log_program_id VARCHAR2 (30);
log_program_gubun VARCHAR2 (12);
log_source VARCHAR2 (20);
log_target VARCHAR2 (20);
log_start_date VARCHAR2 ( 8);
log_start_time VARCHAR2 ( 6);
log_error_row_id VARCHAR2(200);
log_error_desc VARCHAR2(500);
log_error_code VARCHAR2 (30);
log_source_count NUMBER (10);
log_success_count NUMBER (10);
log_error_count NUMBER (10);
변수선언...
cursor c_ORDERS IS
Select ... 부분
BEGIN
--------------------------------------------------------------
-- log 변수 초기화
--------------------------------------------------------------
log_program_id := 'PROC_MC_ZSD003_OLD_T';
log_program_gubun := 'INTERFACE';
log_source := 'SOPROMISE';
log_target := 'ZSD003';
log_start_date := to_char(sysdate, 'yyyymmdd');
log_start_time := to_char(sysdate, 'hh24miss');
log_source_count := 0;
log_success_count := 0;
log_error_count := 0;
Open c_ORDERS;
Loop
Fetch c_ORDERS Into 변수...;
Exit When c_ORDERS%NOTFOUND;
begin
log_error_row_id := v_PLNID || '|' || v_VBELN || '|' || v_POSNR || '|' || v_SOPROMISEID;
log_source_count := log_source_count + 1 ;
처리부...
--------------------------------------------------------------
-- exception
--------------------------------------------------------------
Exception When OTHERS then
log_error_code := sqlcode;
log_error_desc := substr(sqlerrm,1,500);
log_error_count := log_error_count + 1;
pkg_mc_logger.write_error_log(log_program_id, log_program_gubun, log_source, log_target, log_start_date, log_start_time, log_error_row_id, log_error_desc,log_error_code);
rollback;
End;
End Loop;
누락처리...
Close c_ORDERS;
commit;
--------------------------------------------------------------
-- Job Log
--------------------------------------------------------------
pkg_mc_logger.write_log(log_program_id, log_program_gubun, log_source, log_target, log_start_date, log_start_time, to_char(sysdate, 'yyyymmdd'), to_char(sysdate, 'hh24miss'), 0, log_source_count, log_success_count, log_error_count);
END PROC_MC_ZSD003_OLD_T;
해당 프로시저는 pkg 안에 있는거라서요...