IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Procédure avec opération sur des dates


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Procédure avec opération sur des dates
    Bonjour à tous,

    Je viens de créer un procédure qui prend en paramètre une date 'DD/MM/YY'
    Cette procédure doit vérifier si la date est égale ou inférieure à la date courant moins un mois. Par exemple nous sommes le 01/04/09, la date en paramètre doit donc être égale ou supérieure au 01/03/09. Si c'est le cas on update la DB.

    Voila ma première procédure mais une erreur de conversion apparaît lors de l'exécution (character to number conversion error)... et ça m'étonnerait que la condition du if fonctionne....:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    create or replace procedure SP_TAXER
    	(
    		DATE_DEB in date
    	)
    is	
    begin
      if ((to_char(SYSDATE(),'DD/MM/YY') - to_char(DATE_DEB,'DD/MM/YY'))<1)then
    	update CONTRAT
    		set MNT_TPS_CO = MNT_CONTRAT_CO * 0.05,
    		MNT_TVQ_CO = MNT_CONTRAT_CO * 0.075
    		where DATE_CONTRAT > DATE_DEB;
      end if;
    end;
    J'ai également essayé comme ceci, ça fonctionne mais il n'a pas toujours 30 jours dans un mois... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    create or replace procedure SP_TAXER
    	(
    		DATE_DEB in date
    	)
    is	
    begin
      if ((to_char(SYSDATE(),'DDD') - to_char(DATE_DEB,'DDD'))<31)then
    	update CONTRAT
    		set MNT_TPS_CO = MNT_CONTRAT_CO * 0.05,
    		MNT_TVQ_CO = MNT_CONTRAT_CO * 0.075
    		where DATE_CONTRAT > DATE_DEB;
      end if;
    end;
    Si quelqu'un peu m'aider
    Merci,
    AD

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Il faut comparer les dates entre elles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (DATE_DEB >= add_months(sysdate,-1))then

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Excellent merci c'est tout à fait ce qu'il me fallait, je vais me noter ça quelque part.
    Merci encore.
    Bye

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AD001 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (to_char(SYSDATE(),'DD/MM/YY') - to_char(DATE_DEB,'DD/MM/YY')
    La soustraction de chaines de caractères est tout de même une notion surprenante, non ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/09/2011, 11h27
  2. EXCEL SOMME.SI avec condition sur des dates
    Par cfhal dans le forum Excel
    Réponses: 7
    Dernier message: 15/10/2007, 09h21
  3. opérations sur des dates
    Par lieto dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 20/04/2007, 11h30
  4. Opération sur des dates
    Par el_pilacho dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/01/2007, 12h06
  5. Opérations sur des dates
    Par loreleï85 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2006, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo