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