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

Forms Oracle Discussion :

ORA-01858, erreur affectation d'un mois


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut ORA-01858, erreur affectation d'un mois
    *** Bonjour, ***

    J'ai voulu déclarer un curseur qui pointe sur les numéros de livraison qui correspondent à un mois sélectionné dans une liste.
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Cursor C_LIV is select DATE_LIV_PROD from LIVRAISON_PROD where LIVRAISON_PROD.DATE_LIV_PROD= 'DD/:BLOCK8.LIST9/YYYY';
     mois LIVRAISON_PROD.DATE_LIV_PROD%type;
    begin
    	open C_LIV ;
    	fetch C_LIV into mois;
    	Set_Block_Property( 'LIVRAISON_PROD', ONETIME_WHERE, 'DATE_LIV_PROD = ' || mois ) ;
              Go_Block('LIVRAISON_PROD');
              Execute_Query ;
     
    	close C_LIV;
    J'ai essayé aussi d'utiliser dans le WHERE la fonction exact(month...) mais ça ne se compile meme pas : format erroné.

    Que puis-je faire ?

    *** Merci. ***

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    Bonjour samy,

    quel est le type de LIVRAISON_PROD.DATE_LIV_PROD?

    Après je ne comprends pas ce que tu cherches à récupérer dans ton curseur.
    Tu veux sélectionner DATE_LIV_PROD en lui donnant DATE_LIV_PROD dans la clause WHERE.
    Explique ton cas qu'on puisse t'aider

    EDIT : essaie avec la clause WHERE To_Number(To_Char(DATE_LIV_PROD,'MM')) = :BLOCK8.LIST9
    si ton :BLOCK8.LIST9 renvoie le numéro du mois.

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    si DATE_LIV_PROD est une date et mois un number, il est normal que l'égalité ne puisse être respectée : 10/01/2012 = 2 ne fonctionnera jamais.
    Il faut changer le format de date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    To_Number(To_Char(DATE_LIV_PROD,'MM')) = :mois

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE LIVRAISON_PROD.DATE_LIV_PROD= 'DD/:BLOCK8.LIST9/YYYY'
    Dans une chaine de caractère les variables ne sont jamais replacées automatiquement.
    Le select du curseur ne s'exécute pas sous sql même en remplaçant :BLOCK8.LIST9 par une valeur.

    De plus, à quoi sert le curseur ? S'il y a 100000 livraisons sur le mois voulu, ca va faire 100000 fois le même execute query.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    Citation Envoyé par McM Voir le message
    De plus, à quoi sert le curseur ? S'il y a 100000 livraisons sur le mois voulu, ca va faire 100000 fois le même execute query.
    Le curseur affichera les livraisons pour un mois donné, je ne vois pas pourquoi il y aurait 100 000 execute_query car ce n'est pas dans une boucle, ou j'ai raté un truc

  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
    C'est moi qui ai zappé un truc.. faut dire c'est tellement pas intuitif de déclarer un curseur pour ne pas boucler dessus .. pff y'en a qui se compliquent la vie et la vie de ceux qui reprendront leur code

Discussions similaires

  1. Package DBMS_JOB erreur ORA-01858
    Par tibal dans le forum Administration
    Réponses: 2
    Dernier message: 31/01/2009, 14h42
  2. Réponses: 1
    Dernier message: 03/06/2008, 09h05
  3. ora-27040 erreur creation control file
    Par pascale86 dans le forum Oracle
    Réponses: 23
    Dernier message: 19/01/2006, 16h54
  4. ora-00205 - erreur fichier de control files
    Par pascale86 dans le forum Oracle
    Réponses: 15
    Dernier message: 17/01/2006, 09h28
  5. Réponses: 9
    Dernier message: 31/05/2005, 13h38

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