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 09/01/2008, 20h14   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 13
Points : 4
Points : 4
Par défaut Comment déclencher automatiquement un bloc PL/SQL à une date précise

Salut,
dans Oracle je souhaiterais réaliser des traitements à des dates précises. En fait ce que je souhaite faire c'est l'équivalent d'un trigger mais qui serait déclenché par une date que je vais chercher dans ma BDD.
Il me semble que les triggers ne peuvent être déclenchés que par des evenements de type INSERT UPDATE ou DELETE.

Pour concretiser un peu tout ca :
J'ai une table Annonce qui contient un attribut DateFin et un booléen Vendu.
Bon on sent venir l'idée hein ! Ben ouais en fait je voudrais pouvoir passer Vendu à 0,1 ou 2 en fonction de certains paramètres, à la date DateFin.

D'ou ma question : comment declencher un bloc PL/SQL automatiquement à chaque fois que sysdate=DateFin ?
Borni Gloim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 20h22   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
tu peux faire un job lancé quotidiennement qui va vérifier si sysdate=DateFin et faire le traitement si nécessaire.

http://oracle.developpez.com/guide/d...ages/dbms_job/
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 20h32   #3
Invité de passage
 
Inscription : décembre 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 13
Points : 4
Points : 4
A ouais merci pour l'idée je vais aller voir ca ... les jobs, je connais pas donc je vais allez me familiariser avec ca.
Cependant je vais peut être paraitre un peu exigeant mais j'aurai aimé avoir quelque chose qui puisse gérer le declenchement de la date à la seconde prés.
Borni Gloim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 20h38   #4
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
[A la seconde près]
Je confirme le propos de Jerome_Mtl Les JOB sont fait pour çà !!
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 21h14   #5
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Citation:
Envoyé par Borni Gloim Voir le message
Cependant je vais peut être paraitre un peu exigeant mais j'aurai aimé avoir quelque chose qui puisse gérer le declenchement de la date à la seconde prés.
Tu peux programmer un job qui se lance toutes les secondes, mais à mon avis, ça me parait un peu excessif, surtout si tu brasses de grosses tables. Moi je ferais un job qui passe toutes les minutes à moins qu'il y ait un réel besoin d'une telle précision. (et il faut voir combien de temps prend ton traitement...)

Et il y a aussi la possibilité de programmer dynamiquement l'heure future du déclenchement de ce job après un lancement (je n'ai pas testé mais ça doit être faisable facilement, je crois) et qu'il se lance au moment de la prochaine échéance.
Dans ce cas, il faut faire attention de ne pas rater une ligne, surtout si il y a des intervalles proches...
Genre, au temps T, tu fais ton traitement puis tu mets 2 secondes à déterminer quand aura lieu la prochaine échéance qui est à T + 1s donc c'est déjà passer (on est à T + 2s) et le job ne se lancera jamais - je fais dans le très bête mais c'est juste pour soulever la problématique... Et c'est pour ça que je prendrais plutôt ma première solution...

J'imagine aussi la génération automatique d'un job associé à une ligne de table et qui se déclencherait en temps voulu, mais bon, le nombre de jobs est limité par une variable et avoir 3000 jobs qui traînent ce n'est pas une solution très propre...
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 21h17   #6
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
Citation:
Envoyé par Borni Gloim Voir le message
A ouais merci pour l'idée je vais aller voir ca ... les jobs, je connais pas donc je vais allez me familiariser avec ca.
Cependant je vais peut être paraitre un peu exigeant mais j'aurai aimé avoir quelque chose qui puisse gérer le declenchement de la date à la seconde prés.
un planificateur des tâches en principe c'est précis... lis donc le tutoriel et tu verras que ça répond parfaitement à ton besoin
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 21h33   #7
Invité de passage
 
Inscription : décembre 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 13
Points : 4
Points : 4
Ok merci pour toutes ces reponses je devrai bien m'en sortir avec tout cas.
Borni Gloim 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 14h48.


 
 
 
 
Partenaires

Hébergement Web