Bonjour,
nous souhaiterions exécuter plusieurs procédures en parallèle en utilisant dbms_job.
Mais nous n'arrivons pas à lancer une procédure en mode background pour récupérer la main dès son lancement et pouvoir en exécuter une autre dans la foulée.

Voici ce que nous avons fait :
Une procédure qui écrit dans un fichier toutes les 2 secondes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
CREATE OR REPLACE PROCEDURE test_job1 IS
  FicOut Utl_File.File_Type;
  i      NUMBER := 0;
BEGIN
  FicOut := utl_file.fopen(spc_param.fn_get_Valeur('REPERTRV'),
                           'Job1.txt',
                           'w');
  utl_file.put_line(FicOut, to_char(SYSDATE, 'HH24:MI:SS'));
  WHILE TRUE LOOP
    i := i + 1;
    countdown(0, 0, 0, 2);
    utl_file.put_line(FicOut, i);
    IF i > 10 THEN
      EXIT;
    END IF;
  END LOOP;
  utl_file.fclose(FicOut);
END test_job1;
Création dun job pour la lancer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
DECLARE
x number;
BEGIN
dbms_job.submit(x,'test_job1;',sysdate,'sysdate+1',FALSE, 0, TRUE);
dbms_output.put_line(x);
END;
Exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
BEGIN
dbms_job.run(5, TRUE);
END;
Que l'on mette TRUE ou FALSE comme 2ème argument l'exécution reste en foreground

Quelqu'un a t-il une idée ?? par exemple pour forcer les exécutions en background
Merci