|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 13 ![]() |
Bonjour,
je dois créer un job sur Oracle 9i et je voudrais que ma fonction soit lancée toutes les deux heures indépendamment du temps d'exécution de cette dernière. J'ai essayé cella mais il me semble que l'interval n'est pas bien défini. Quelqu'un peut m'aider ? Merci. Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
ça parait bon pourtant, c'est quoi le problème ?
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Orafrance, l'exécution de l'interval est lancée APRES le job.
Ce qui fait que si le job dure 1h, ça décale d'une heure à chaque fois. Pour résoudre ça, faut faire un "trunc(sysdate) sur 2h" pour ramener l'heure de départ Un exemple de code : Code :
TRUNC(SYSDATE) + (2 + TO_NUMBER(TO_CHAR(SYSDATE, 'HH24')) - MOD(TO_NUMBER(TO_CHAR(SYSDATE, 'HH24')),2)) / 24
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 13 ![]() |
Merci beacoup,
J'ai également essayé ceci et ça fonctionne. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Non ! Tu tronque la date à la minute !
Le calcul de la prochaine date s'effectue à la fin du job. S'il commence à 14h00, finit à 14h15, ton prochain job sera à 16h15 Il n'y a pas de moyen de savoir à quelle heure a commencé un job (j'ai jamais essayé de chercher si avec des var de session ça passe). Tout dépend combien de temps prend ton job. S'il prend moins d'une heure, un trunc(sysdate, 'HH24') + 2/24 c'est bon. S'il peut prendre plus d'une heure, faut passer par la requête que j'ai fourni plus haut (elle prend que les heures paires).
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com