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 11/12/2010, 00h19   #1
Nouveau Membre du Club
 
Avatar de nadsky
 
Étudiant
Inscription : juillet 2007
Messages : 118
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 118
Points : 31
Points : 31
Par défaut DBMS_job qui s'exécute une fois par an

Bonsoir à tous,

Je vous écris car j'ai un gros problème pour mettre un champ booléen de true à false d'une table une fois par an.

J'avais réussi à le faire mensuellement pour une autre table (tous les 1ers du mois à minuit), en passant par les DBMS_jobs.
Ici, mon but est de mettre ce champ de true à false tous les 31 décembre à 23h 59 (ou le 1er janvier à minuit de l'année suivante).

Dans un premier temps, j'ai tenté de passer par les DBMS_jobs
Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
DECLARE
	my_job_ann number;
begin
  sys.dbms_job.submit(job => :job,
                      what => 'Charge_ann_false;',
                      next_date => trunc(sysdate)+23/24,
                      interval => 'TRUNC(LAST_DAY(SYSDATE) + 1)');
  commit;
end;
et voyant que j'avais un problème au niveau de la syntaxe, j'ai tenté de passer par DBMS_SCHEDULER et faire un create job, mais j'ai une erreur m'indiquant que je n'avais pas les privilèges suffisants (alors que je suis admin...)

Pourriez-vous m'éclairer un peu ou me donner des pistes?

Je vous remercie d'avance
__________________
HQ Nadsky
nadsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 21h54   #2
Membre habitué
 
Inscription : février 2006
Messages : 139
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2006
Messages : 139
Points : 126
Points : 126
bonsoir
http://www.oracle-base.com/articles/...ents_10gR2.php
kervoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2010, 13h23   #3
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Le :job correspond à un retour de la procédure
Code :
1
2
3
4
5
6
7
8
9
DECLARE
	my_job_ann number;
begin
  sys.dbms_job.submit(job => my_job_ann,
                      what => 'Charge_ann_false;',
                      next_date => trunc(sysdate)+23/24,
                      interval => 'TRUNC(LAST_DAY(SYSDATE) + 1)');
  commit;
end;
Last_day, c'est le dernier jour du mois, si tu veux le passer tout le temps le 1er janvier à 0h (plus simple à planifier que le 31/12 à 23h59) :
Code :
interval => 'TRUNC(ADD_MONTHS(SYSDATE,12))'
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h51   #4
Nouveau Membre du Club
 
Avatar de nadsky
 
Étudiant
Inscription : juillet 2007
Messages : 118
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 118
Points : 31
Points : 31
Merci, ça marche
__________________
HQ Nadsky
nadsky 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 22h40.


 
 
 
 
Partenaires

Hébergement Web