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
Création dun job pour la lancer :
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;
Exécution :
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;
Que l'on mette TRUE ou FALSE comme 2ème argument l'exécution reste en foreground
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BEGIN dbms_job.run(5, TRUE); END;![]()
Quelqu'un a t-il une idée ?? par exemple pour forcer les exécutions en background
Merci
Partager