Search notes:

Oracle: DBMS_SCHEDULER - EVALUATE_CALENDAR_STRING

dbms_scheduler.evaluate_calendar_string evaluate the next run-date for a calendar string (which is used in the parameter repeat_interval of dbms_scheduler.create_schedule).
The following example prints each month's third business day between 2020-10-01 and sysdate, assuming that a business day is between Monday and Friday.
declare
   dt_start    date := date '2020-10-01';
   dt_after    date := dt_start;
   dt_next     date;
  
begin
 
   loop
 
     dbms_scheduler.evaluate_calendar_string(
        'freq     = monthly;'             ||
        'byday    = mon,tue,wed,thu,fri;' ||
        'bysetpos = 3'                    ,
         ---------------------------------
         dt_start                         ,
         return_date_after => dt_after    ,
         next_run_date     => dt_next
     );
    
     exit when dt_next > sysdate;
    
     dbms_output.put_line('next run date: ' || to_char(dt_next, 'yyyy-mm-dd'));
     dt_after := dt_next;
       
   end loop;
  
end;
/

See also

The scheduler's calendaring syntax.
dbms_scheduler

Index