Bonjour !
Je souhaite qu'une procedure stocké s'execute le premier jour de chaque mois.
Pour cela je pensais facilement utiliser DBMS_JOB.
J'ai regarder le nombre de job que je peux programmer
SQL> show parameter job_queue_processes ;
NAME TYPE VALUE
---------------------------- ----------- ------------------------------
job_queue_processes integer 5
ma version de oracle
SQL> show release
release 801070400
je regarde les jobs que j'ai en queue
SQL> select
2 JOB,
3 NEXT_DATE
4 from
5 sys.job$;
JOB NEXT_DAT
---------- --------
1 11/05/06
21 11/05/06
41 11/05/06
61 11/05/06
j'en ai 4 sur 5 donc c'est bon
pour eviter d'eventuels soucis je jai augmenter la taille de la queue.
SQL> alter system set job_queue_processes=10;
Système modifié.
SQL> commit;
Validation effectuée.
SQL> show parameter job_queue_processes ;
NAME TYPE VALUE
---------------------------- --------- ------------------------------
job_queue_processes integer 10
passons maintenant a la creation de mon job
SQL> begin
2 dbms_job.isubmit('10','exec HISTDETTE',add_months(trunc(sysdate,'MM'),1),'add_months(trunc(sysdate,''MM''),1)');
3 commit ;
4 end ;
5 /
begin
*
ERREUR à la ligne 1 :
ORA-06550: line 1, column 98:
PLS-00103: Encountered the symbol "HISTDETTE" when expecting one of the following:
:= . ( @ % ;
The symbol "; was inserted before "HISTDETTE" to continue.
ORA-06512: at "SYS.DBMS_JOB", line 79
ORA-06512: at "SYS.DBMS_JOB", line 131
ORA-06512: at "SYS.DBMS_JOB", line 96
ORA-06512: at line 2
et la je ne vois pas ce qui n'est pas correct
10 : Mon numero de job n'est pas deja utilisé
'exec HISTDETTE' : Quand je lance manuellement exec HISTDETTE ca fonctionne tres bien
add_months(trunc(sysdate,'MM'),1) : Prochaine execution (le 1er du mois suivant)
'add_months(trunc(sysdate,''MM''),1)' : Intervalle, le 1er de chaque mois
Si quelqu'un voit ce qui ne va pas, peut il m'eclairer des ses lumières
Merci
Partager