Have you heard about Oracle can hide some exceptions raised from user code?
One well-known situation is described here.
But there is one more case I've just found.
Try this code:
create or replace procedure test1 is
begin
raise no_data_found;
end;
/
begin test1; end;
/
begin
dbms_scheduler.create_job(job_name => 'T1',
job_type => 'STORED_PROCEDURE',
job_action => 'TEST1',
enabled => TRUE,
start_date => systimestamp,
auto_drop => true);
END;
/
select ACTUAL_START_DATE, LOG_DATE,STATUS,ERRORS from user_scheduler_job_run_details where job_name='T1';
The final query shows STATUS='SUCCEEDED' even though call of test1() raises a no_data_found exception.
Btw, if job is defined slightly differently
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN raise no_data_found; end;',
all works as expected, i.e. STATUS='FAILED'.
Checked on 11.2.0.3/4 and 12.1.0.2.
UPD, see MOS doc 1331778.1 for more details.
One well-known situation is described here.
But there is one more case I've just found.
Try this code:
create or replace procedure test1 is
begin
raise no_data_found;
end;
/
begin test1; end;
/
begin
dbms_scheduler.create_job(job_name => 'T1',
job_type => 'STORED_PROCEDURE',
job_action => 'TEST1',
enabled => TRUE,
start_date => systimestamp,
auto_drop => true);
END;
/
select ACTUAL_START_DATE, LOG_DATE,STATUS,ERRORS from user_scheduler_job_run_details where job_name='T1';
The final query shows STATUS='SUCCEEDED' even though call of test1() raises a no_data_found exception.
Btw, if job is defined slightly differently
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN raise no_data_found; end;',
all works as expected, i.e. STATUS='FAILED'.
Checked on 11.2.0.3/4 and 12.1.0.2.
UPD, see MOS doc 1331778.1 for more details.
No comments:
Post a Comment