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

Oracle Discussion :

Formatage date Fonction


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 63
    Par défaut Formatage date Fonction
    Bonjour,

    Merci d'avance aux personnes passant sur ce fil et essayant de m'aider, je sens que la question à déjà du être possée des milliers de fois, mais j'avoue m'emeller les pinceaux depuis une bonne heure et avoir besoin d'un regard neuf sur mon soucis , que voici .

    La fonction suivante
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CREATE OR REPLACE FUNCTION is_vacant(numod IN VARCHAR2) RETURN VARCHAR2 IS
     
     wresult DATE;
    wrenvoi VARCHAR2(15);
    BEGIN
      -- initialisation
      wresult := '01-JAN-2007';
     
      wrenvoi := '';
     
      SELECT to_date(deb_vac)
      INTO wresult
      FROM vmt_vacant
      WHERE num_mod = numod
       AND vacant = 'OUI';
     
      IF(wresult IS NOT NULL) THEN
        wrenvoi := 'OUI(' || to_date(wresult) || ')';
        RETURN wrenvoi;
      ELSE
        wrenvoi := 'NON';
        RETURN wrenvoi;
      END IF;
     
    END;
    Me pose un soucis.
    Le champs deb_vac de la vue VMT_VACANT est formaté ainsi TO_CHAR(champsdate,'DD-MON-YYYY') "deb_vac" .
    En revanche dans ma fonction, je n'ai pas réussi à me dépatoullier differement que faire ressortir le renvoi sous la forme
    " OUI(DD/MM/YY) "

    Ma question est simple : que dois-je modifier pour obtenir en sorti un format de la forme " OUI(DD-MON-YYYY)"

    Merci encore pour vos réponses.

    Cordialement
    JD

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    bah faut pas faire un TO_DATE tout simplement TO_DATE d'une date ça n'a aucun sens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wrenvoi := 'OUI(' || to_char(wresult,'DD-MON-YYYY') || ')';

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 63
    Par défaut
    Bonjour et merci pour votre réponse...

    Malheureusement j'avais déjà essayé de proceder ainsi puisque c'est la transformation que j'effectue de la table T1 vers la vue VMT_VACANT (utilisée pour la fonction) ...

    Voici le message que j'obtiens sur je procéde ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur
    ORA-06512: à "LOGI.IS_VACANT", ligne 18
    ORA-06512: à ligne 7
    Merci pour la suite...

    Cordialement
    JD

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    déjà, au strict sens esthétique ce serait plus "joli" comme ça :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE OR REPLACE FUNCTION is_vacant(numod IN VARCHAR2) RETURN VARCHAR2 IS
     
    wresult DATE;
    wrenvoi VARCHAR2(15);
    BEGIN
     
    BEGIN
      SELECT deb_vac
         INTO wresult
        FROM vmt_vacant
      WHERE num_mod = numod
          AND vacant = 'OUI'
          AND to_date(deb_vac) IS NOT NULL;
     
        wrenvoi := 'OUI(' || to_date(wresult) || ')';
     
    EXCEPTION WHEN NO_DATA_FOUND THEN
        wrenvoi := 'NON';
    END;
     
    RETURN wrenvoi;
     
    END;
    /
    la colonne deb_vac ne serait-elle pas déjà de format DATE ?

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ben non, il a dit que c'était une vue et la colonne : TO_CHAR(champsdate,'DD-MON-YYYY') "deb_vac"

    Mais dans ton code, je changerait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wrenvoi := 'OUI(' || to_date(wresult) || ')';
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     wrenvoi := 'OUI(' || to_char(to_date(wresult, 'DD-MON-YYYY'), 'DD/MM/YY') || ')';

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Et aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND to_date(deb_vac) IS NOT NULL;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND deb_vac IS NOT NULL;
    -- Conversion inutile

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

Discussions similaires

  1. formatage dates heures
    Par leglofeur dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/12/2005, 09h37
  2. [Dates] Fonction date
    Par dafalri dans le forum Langage
    Réponses: 18
    Dernier message: 13/12/2005, 11h27
  3. [Dates] Fonction sleep
    Par nebule dans le forum Langage
    Réponses: 7
    Dernier message: 15/11/2005, 15h39
  4. Réponses: 3
    Dernier message: 18/10/2005, 15h34
  5. Réponses: 8
    Dernier message: 05/05/2004, 12h30

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