DBMS_SCHEDULER package to send your APEX_AUTOMATION.EXECUTE to the background.

 

APEX_AUTOMATION.EXECUTE :- the APEX_AUTOMATION.EXECUTE procedure executes the automation in the foreground (so you have to wait), 

DBMS_SCHEDULER.CREATE_JOB :-executes the automation in the background.

Objective:-  DBMS_SCHEDULER package to send your APEX_AUTOMATION.EXECUTE to the background.

declare
 l_filters apex_exec.t_filters;
        l_static_id apex_appl_automations.static_id%type;
        l_exists number;
        l_application_id apex_appl_automations.application_id%type;
        l_job_short_name scheduled_jobs.job_short_name%type;
BEGIN
    begin
    select static_id,application_id into l_static_id ,l_application_id from apex_appl_automations
    where AUTOMATION_ID=:P10_STATIC_ID;
    end;

l_job_short_name:=replace(l_static_id,'-','_');

   /* apex_exec.add_filter(
        p_filters        => l_filters,
        p_column_name    => 'DEPTNO',
        p_filter_type    => apex_exec.c_filter_eq,
        p_value          => 10 );

    apex_automation.execute(
        p_static_id       => l_static_id,
        p_filters         => l_filters );*/
  select count(*)
  into l_exists
  from  user_scheduler_jobs
  where job_name = l_job_short_name;


  if l_exists > 0 then
    dbms_scheduler.run_job (l_job_short_name,false);
 else


DBMS_SCHEDULER.CREATE_JOB (
  job_name        =>  l_job_short_name,
  job_type        =>  'PLSQL_BLOCK',
  job_action      =>  apex_string.join(
                          apex_t_varchar2( 
                              'begin', 
                              '    apex_session.create_session(' || :APP_ID || ',' || :APP_PAGE_ID || ',''' || replace( :APP_USER, '''', '''''' ) || ''');',
                              '    apex_automation.execute('     || :APP_ID || ',''' || replace( l_static_id, '''', '''''' ) || ''');',
                              'end;' ) ),
  start_date      => sysdate,
  repeat_interval => null,
  enabled         => true );
  end if;



END;

Comments

Popular posts from this blog

Telegram Integration with Oracle

The username or password for the connection pool named |apex||, are invalid, expired, or the account is locked

Enabled SQL Developer Web (SDW) & ORDS Database API ORDS 19.4