Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 07/09/2006, 17h41   #1
Membre habitué
 
Inscription : décembre 2005
Messages : 455
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 455
Points : 127
Points : 127
Par défaut PL/SQL: Gestion des dates

Bonjour,

j'ai un package qui est lancé par la procédure suivante:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
PROCEDURE MAIN IS
    LA_DATE DATE; -- date du dernier lancement du package 
  BEGIN
    --  Initialisation de LA_DATE 
    LA_DATE:= LAST_EXECUTE('OPTISTORE');
   LA_DATE:= LA_DATE+1;
 
    --Permet de gérer le cas où il y a  plusieurs journées de ventes 
   WHILE TRUNC(la_date) <= TRUNC(SYSDATE) LOOP
 
 
      CELL_P(LA_DATE);
 
     CELL_X(LA_DATE);
 
    LA_DATE:=LA_DATE+1;
   END LOOP;
     PRINT_CELLS();
 
 -- On met à jour la date d'execution 
MAJ_EXECUTE('OPTISTORE');
  END;
Donc ce package est normalement exécuté tous les jours après 21h et il récupère toutes les données enregistrées dans la journée pour créer un fichier par jour.
Si ce package n'est pas lancé pendant 2 jours, avec la boucle je gère le cas et j'ai donc un fichier par jour.
Cependant si le package est lancé dans la journée alors là j'ai un problème car il me met un fichier à vide car il consière que la journée est terminée.
Comme mon fichier a dejà été créé la journée, le fichizer du soir (avec toutes les données sort en erreur.

Je n'arrive pas à voir comment gérer le cas où ce package est lancé avant 21h.
Quelq'un aurait il une colution vers laquelle m'orienter?J'espère avoir été claire.
Je suis ssous orclae 9.
claralavraie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 17h58   #2
Xo
Expert Confirmé
 
Avatar de Xo
 
Inscription : janvier 2005
Messages : 2 701
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2005
Messages : 2 701
Points : 3 237
Points : 3 237
Envoyer un message via Skype™ à Xo
Bonjour,

merci de jeter un oeil à la F.A.Q Oracle :

Ces 2 QR en particulier devraient vous intéresser :
- Comment tronquer une date avec la fonction TRUNC()
- Formater les dates
__________________
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau

"Expliquer empêche de comprendre si cela dispense de chercher"

Quiz Oracle : venez tester vos connaissances !

La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Xo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 18h06   #3
Membre habitué
 
Inscription : décembre 2005
Messages : 455
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 455
Points : 127
Points : 127
Merci.
Mais je connaissais ces fonctions.
le seul moyen que vous me conseillez c'est de regarder si la date d'execution est supèrieur ou inférieur à 21h?
claralavraie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2006, 10h21   #4
Membre actif
 
Inscription : septembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 142
Points : 156
Points : 156
Tu peux aussi passer un paramètre à la procédure qui signale s'il doit avoir un appel à MAJ_EXECUTE ou non. Comme cela tu peux la lancer soit en mode avant 21h soit en mode après 21h.
Arturius est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h34.


 
 
 
 
Partenaires

Hébergement Web