1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
begin
-- appel;
/* Lancement de la procédure par le package dbms_job pour la version 9i*/
dbms_job.isubmit('1245','lang_laufend;',sysdate,null);
forms_ddl('commit') ;
/* Lancement de la procédure par le package dbms_scheduler pour la version 10g*/
/*
dbms_scheduler.create_job(
job_name => 'APEX__JOB_LANG_LAUFEND'
,job_type => 'stored_procedure'
,job_action => 'lang_laufend'
,start_date => SYSDATE
,enabled => TRUE
);*/
end;
declare
v_percent number:=0;
nb number :=0;
begin
loop
select count(job)
into nb
from user_jobs
where job='1245' and total_time!=0;
if nb!=0 then
set_item_property('blo_progress.progressbar',width, 0);
v_percent :=0;
loop/* pour suivre la progression de l'éxecution de la procedure lancée par dbms_job*/
exit when v_percent =100;
select (sofar / totalwork) * 100
into v_percent
from v$session_longops
where opname = 'APEX__JOB_LANG_LAUFEND' and sofar < totalwork;
:blo_progress.percent:= v_percent||'%';
set_item_property('blo_progress.progressbar',width, round( v_percent,2));
synchronize;
dbms_lock.sleep(2);
end loop;
end if;
exit when nb!=0 ;
end loop;
exception
when NO_DATA_FOUND then
v_percent := -1;
set_item_property('blo_progress.progressbar',width, 100);
:blo_progress.percent:= '100'||'%';
when TOO_MANY_ROWS then
v_percent := -1;
DBMS_SCHEDULER.drop_job (job_name => 'APEX__JOB_LANG_LAUFEND',FORCE=> true) ;
end; |
Partager