Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Stored Proc running twice using DBMS_Scheduler

Not_EnabledApr 3 2013 — edited Apr 3 2013
Hello all,

I have a vb front end that calls a main stored proc which submits scheduler jobs to execute several stored procs asynchronously. Everything is working, except the part that the several stored procs are running twice. In the troubleshooting, I have eliminated the front end from being the culprit and the stored procs themselves. Essentially, when I call the stored proc using dbms_scheduler.create_job, it runs twice, even manually. I am about at wits end trying to figure out why: Using Oracle 11gR2

I started off setting up the programs
begin
--create program
dbms_scheduler.create_program
( program_name => 'prog_name'
,program_type => 'STORED_PROCEDURE'
,program_action => 'usp_sub_proc_1'
,number_of_arguments => 8
,enabled => FALSE
); 

dbms_scheduler.DEFINE_PROGRAM_ARGUMENT
( program_name=> 'prog_name'
,argument_position=>1
,argument_name => 'name'
,argument_type=>'VARCHAR2'
);
...
/*the remaining 7 arguments are in code but not display for space reasons*/
...
dbms_scheduler.enable('prog_name');
end;
Then the main stored proc executes this code:
declare v_job_name varchar2(100);
    v_1 varchar(50) := 'All';
    v_2 varchar(50) := 'All';
    v_3 varchar(50) := 'All';
    v_4 varchar(50) := 'All';
    v_5 varchar(50) := 'TEST';
    i_6 integer := 1;
    v_7 varchar(50) := 'TEST_NE';
    ts_8 timestamp := current_timestamp;
           
begin
    v_job_name := 'uj_dmo_1';

 dbms_scheduler.create_job (v_job_name
                                        ,program_name => 'prog_name'
                                        ,job_class => 'UCLASS_1'
                                        ,auto_drop => TRUE
                                        );                   
 --set parameters 
dbms_scheduler.set_job_argument_value(v_job_name,1, v_1);
dbms_scheduler.set_job_argument_value(v_job_name,2, v_2);
dbms_scheduler.set_job_argument_value(v_job_name,3, v_3);
dbms_scheduler.set_job_argument_value(v_job_name,4, v_4);
dbms_scheduler.set_job_argument_value(v_job_name,5, v_5);
dbms_scheduler.set_job_argument_value(v_job_name,6, to_char(i_6));
dbms_scheduler.set_job_argument_value(v_job_name,7, v_7);
dbms_scheduler.set_job_argument_value(v_job_name ,8, to_char(ts_8));
                    
 --enable job
dbms_scheduler.enable(v_job_name);
                    
--execute job
dbms_scheduler.run_job(job_name => v_job_name , use_current_session => FALSE); 
end;
...
And this is where I get the double execution of the job, but I am just not seeing it in my syntax, dba_scheduler_jobs, logging, etc. Any help is greatly appreciated, thanks!!
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 1 2013
Added on Apr 3 2013
2 comments
2,105 views