Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So führen Sie eine gespeicherte Prozedur in einer anderen Sitzung zur gleichen Zeit in pl/sql aus

Um das Posten mehrerer Oracle-Jobs zu vermeiden, können Sie versuchen, William Robertson Parallel PL/ zu verwenden. SQL-Launcher .

Die Idee ist, eine Funktion mit PARALLEL_ENABLE zu erstellen und PIPELINED Funktionen:

   function pq_submit
    ( p_job_list  varchar2_tt
    , p_pq_refcur rc_pq_driver )
    return varchar2_tt
    parallel_enable(partition p_pq_refcur by any)
    pipelined
 is
 ...
 loop
   execute_command(your_proc);
 end loop;

Funktion execute_command verwendet autonomous_transaction .

Es sieht so aus:

procedure execute_command
  ( p_what log_times.what%type )
is
  pragma autonomous_transaction;
begin
  execute immediate p_what;
  commit;
end execute_command;