Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2006, 11h45   #1
Inscrit
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 179
Points : 46
Points : 46
Par défaut [PLSQL oracle 9i] erreur sur les jobs

bonjour

j'ai un job que je dois mettre dans la file d'attente voici mon script :

Code :
1
2
3
4
5
6
7
8
9
declare
jobno number;
begin
dbms_job.submit(jobno,'prog;',
      trunc (sysdate, 'RR') + 364 + 23/24, 
                   'trunc (sysdate,"RR") + 90 + 23/24');
 
commit;
end;
mais a l'exécution oracle me sort comme erreur :
Citation:
ORA-23319: la valeur du paramètre "trunc (sysdate,"RR") + 90 + 23/24" n'est pas approprié
ORA-06512: à "SYS.DBMS_JOB", ligne 57
ORA-06512: à "SYS.DBMS_JOB", ligne 134
ORA-06512: à ligne 4
comment corriger cette erreur ?

merci de votre aide
Herveg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 11h50   #2
Inscrit
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 179
Points : 46
Points : 46
j'ai pu corriger l'erreur mais une autre survient :

Code :
1
2
3
4
5
ERROR à la ligne 1 :
ORA-23420: l'intervalle doit évaluer un délai du futur
ORA-06512: à "SYS.DBMS_JOB", ligne 57
ORA-06512: à "SYS.DBMS_JOB", ligne 134
ORA-06512: à ligne 4
le job doit s'excuter pour la premiere fois le 31 décembre 2006 et puis aprés tous les trois mois

merci
Herveg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 11h56   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
on pourrait peut-être voir la nature de la correction non ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 12h03   #4
Inscrit
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 179
Points : 46
Points : 46
ok au lieu de 'trunc (sysdate,"RR") + 90 + 23/24') j'ai remplacé par
'trunc (sysdate,''RR'') + 90 + 23/24');

a la place du double quote j'ai mis deux quotes successifs
Herveg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 12h03   #5
Membre Expert
 
Inscription : avril 2006
Messages : 1 024
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 024
Points : 1 175
Points : 1 175
Citation:
Envoyé par Herveg
j'ai pu corriger l'erreur mais une autre survient :

Code :
1
2
3
4
5
ERROR à la ligne 1 :
ORA-23420: l'intervalle doit évaluer un délai du futur
ORA-06512: à "SYS.DBMS_JOB", ligne 57
ORA-06512: à "SYS.DBMS_JOB", ligne 134
ORA-06512: à ligne 4
le job doit s'excuter pour la premiere fois le 31 décembre 2006 et puis aprés tous les trois mois

merci
Et donc, il faut deviner qu'est-ce que tu as mis au final comme syntaxe d'après l'erreur oracle ??

de plus en plus dur ce jeu

[EDIT]
Désolé pour mon mauvais esprit nos messages se sont croisés....
[/EDIT]
remi4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 12h11   #6
Inscrit
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 179
Points : 46
Points : 46
ok je comprends l'intevalle doit etre une date superieur a sysdate

alors mais lui dire de s'excuter pour la premiere fois le 31/12/2006 puis aprés tous les 90 jours !
Herveg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 12h11   #7
Membre Expert
 
Inscription : avril 2006
Messages : 1 024
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 024
Points : 1 175
Points : 1 175
En fait il y a un piège...

Le paramètre "intervalle" ne doit pas contenir un intervalle ... ... mais l'expression de la date/heure du futur post de job... c'est pour ça qu'il y a toujours sysdate à l'interrieur.

Pour un job devant se poster à +3 mois par rapport à un sysdate donné, alors l'expression ne doit pas etre ce que tu a mis en dur (le 1ier avril de l'année courante) mais:

Code :
'add_months(trunc (sysdate,''MM''),3) + 23/24'
remi4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 12h16   #8
Inscrit
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 179
Points : 46
Points : 46
ok c 'est noté merci encore !
Herveg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 12h26   #9
Inscrit
 
Inscription : avril 2004
Messages : 179
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 179
Points : 46
Points : 46
une chose !!

est-ce que c'est possible de mettre deux procédures a exécuter dans le job

par exemple

Code :
1
2
3
4
5
6
7
8
9
declare
jobno number;
begin
dbms_job.submit(jobno,'prog1','prog2';',
      trunc (sysdate, 'RR') + 364 + 23/24, 
                   'add_months(trunc (sysdate,''MM''),3) + 23/24');
 
commit;
end;
Herveg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 14h01   #10
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Oui c'est possible en faisant :
Code :
1
2
3
4
5
6
7
8
9
declare
jobno number;
begin
dbms_job.submit(jobno,'prog1;prog2;',
      trunc (sysdate, 'RR') + 364 + 23/24, 
                   'add_months(trunc (sysdate,''MM''),3) + 23/24');
 
commit;
end;
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h23.


 
 
 
 
Partenaires

Hébergement Web