DBMS_PARALLEL_EXECUTE is not about issuing queries in parallel, it is about performing any nominated task in parallel chunks.
So in your case, you currently have
- a procedure that takes a map id
- has a list of map id's (country/state/etc combinations) to process
So all you need do is create chunks based on the map id, eg
declare
l_input clob;
begin
l_input := 'select distinct map_id, map_id from test_tab';
dbms_parallel_execute.create_chunks_by_sql(task_name => 'proc_task',
sql_input => l_input,
by_rowid => false);
end;
/
and then run the proc using that map id's as input
declare
l_task varchar2(32767);
begin
l_task := 'my_proc(:start_id,:end_id)';
dbms_parallel_execute.run_task(task_name => 'proc_task',
sql_input => l_task,
language_flag => dbms_sql.native,
parallel_level => 10);
end;
/