Sur Oracle 10.2.0.2

Bonjour,
À l'intérieur d'une procédure je fais la création d'un job qui va faire exécuter un shell script. Mon problème est que je veux que mon PL attende que le shell script soit terminé avant de continuer son code.

J'ai alors mis le paramètre use_current_session = true, donc je m'attendais à ce qu'il continue l'exécution, mais voilà qu'il ne fait pas le reste du code. La vue DBA_SCHEDULER_RUN_JOB_DETAILS m'affiche que le job s'est bien déroulé. Pour être certain j'ai fait un update d'une table avant de faire run_job, et un update de la même table après le run_job. Le deuxième update ne fonctionne pas.

Voici ma partie de code:
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
       v2_NomJob := 'JOB'||TO_CHAR(Message.NO_REQUE);
       v2_Commentaire := Message.NOM_SCRIPT_EXEC||Message.COD_ENVIR||TO_CHAR(Message.NO_PHASE);
 
       v2_CmdSQL := 'UPDATE PARM_QUEUE'||
                    '   SET VAL_PARM = 1'||
                    ' WHERE COD_ENVIR = '''||Message.COD_ENVIR||''''||
                    '   AND NOM_PARM = ''NB_EN_COURS_'||Message.NOM_SCRIPT_EXEC||'''';
 
       EXECUTE IMMEDIATE v2_CmdSQL;
 
       COMMIT;
 
       DBMS_SCHEDULER.CREATE_JOB(job_name => v2_NomJob,
                                 job_type => 'EXECUTABLE',
                                 job_action => '/usr/bin/ksh',
                                 start_date => systimestamp at time zone '-5:00',
								 number_of_arguments => 1,
                                 job_class => 'DEFAULT_JOB_CLASS',
                                 comments => v2_Commentaire,
                                 auto_drop => FALSE,
                                 enabled => FALSE);
 
       DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(v2_NomJob, 1, '/HOME/oracle/doe '||TO_CHAR(Message.NO_REQUE));
 
       DBMS_SCHEDULER.SET_ATTRIBUTE(v2_NomJob, 'restartable', TRUE);
 
       DBMS_SCHEDULER.ENABLE(v2_NomJob);
 
       DBMS_SCHEDULER.RUN_JOB(v2_NomJob, use_current_session=> TRUE);
 
 
       v2_CmdSQL := 'UPDATE XD_PARM_QUEUE'||
                    '   SET VAL_PARM = 10'||
                    ' WHERE COD_ENVIR = '''||Message.COD_ENVIR||''''||
                    '   AND NOM_PARM = ''NB_EN_COURS_'||Message.NOM_SCRIPT_EXEC||'''';
 
       EXECUTE IMMEDIATE v2_CmdSQL;
 
       COMMIT;
Merci!