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

SQL Oracle Discussion :

Invalid NUMBER separateur de milliers et decimal


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Points : 35
    Points
    35
    Par défaut Invalid NUMBER separateur de milliers et decimal
    Bonjour,

    J’utilise ORACLE 9.2, j'ai besoin d'insérer des données dans une table avec une colonne déclarée en NUMBER 12. Les données sont de type:
    1 100,00. J'obtiens ORA-01722:INVALID NUMBER.
    j'ai tenté de modifier via ALTER session SET nls_numeric_characters=' ,' ou ALTER session SET nls_numeric_characters=', '; Mais je n'obtiens pas mon résultat.
    J’espère que vous pourrez m'aider.
    Merci par avance
    Cordialement

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est étrange qu'en modifiant les paramètres de session ça ne fonctionne pas.

    Vous pouvez essayer de le mettre directement dans le to_number, mais ce n'est pas la meilleure solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select to_number('1 100,2', '9G999D99', 'nls_numeric_characters='', ''') as val
      from dual;
     
    VAL
    ------
    1100.2

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    j'ai executé la commande:
    ALTER session SET nls_numeric_characters='NLS_NUMERIC_CHARACTERS='', ''';
    Resultat:
    Session modifiée.
    Puis:
    SELECT to_number('4 125,12') FROM dual
    *
    ERREUR à la ligne 1 :
    ORA-01722: Nombre non valide
    Le fichier de données fait plusieurs centaines de lignes, je peux pas les inserer manuellement!
    merci de votre aide.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Pour plus details sur mon probleme, j'ai saisi la commande:
    SELECT * FROM NLS_SESSION_PARAMETERS ;
    PARAMETER VALUE
    ------------------------------ ----------------------------------------
    NLS_LANGUAGE FRENCH
    NLS_TERRITORY FRANCE
    NLS_CURRENCY €
    NLS_ISO_CURRENCY FRANCE
    NLS_NUMERIC_CHARACTERS ,
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT DD/MM/RR
    NLS_DATE_LANGUAGE FRENCH
    NLS_SORT FRENCH
    NLS_TIME_FORMAT HH24:MI:SSXFF
    NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF
    NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
    NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
    NLS_DUAL_CURRENCY €
    NLS_COMP BINARY
    NLS_LENGTH_SEMANTICS BYTE
    NLS_NCHAR_CONV_EXCP FALSE
    17 ligne(s) sélectionnée(s).

    SELECT to_number('4 125,12') FROM dual
    *
    ERREUR à la ligne 1 :
    ORA-01722: Nombre non valide
    peut-être que cela peut vous aider à comprendre mon probleme.

    merci de votre aide.
    cordialement

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Rajoutez juste le format alors, pour forcer la correspondance des caractères.
    vous pouvez prévoir large :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT to_number('4 125,12', '9G999G999G999G999D99') FROM dual

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    j'ai essayé votre recommandation mais même erreur:
    SELECT to_number('4 125,12', '9G999G999G999G999D99') FROM dual
    *
    ERREUR à la ligne 1 :
    ORA-01722: Nombre non valide
    je viens de poster un second message concernant les valeurs NLS, quand j'interroge la database fonction "tous les paramtres d'initialisation" je remarque que les valeurs NLS sont AMERICA. Hos j'ai modifié ma base de registre en suivant un TUTO, en modifiant la valeur:
    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_O10R2\NLS_LANG=FRENCH_FRANCE.WE8MSWIN1252.
    Sauf qu'etant en 9.2 je l'ai modifié dans HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG=FRENCH_FRANCE.WE8MSWIN1252
    et à la racine ORACLE.
    J'avoue que je ne sais plus ce qui est pris en compte.
    j'ai rebooté le serveur aprés modif de la base registres.
    Merci cordialement

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    J'avoue ne pas comprendre pourquoi je ne reçois plus de réponses que cela; n'y a t il pas de solution à mon problème.
    Merci par avance de votre aide.
    Cordialement

  8. #8
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    si tu essaies cela ?
    malgré que ce ne soit pas très beau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT to_number(replace('4 125.12',',','.'), '9G999G999G999G999D99') FROM dual
    Je n'ai que Oracle Apex pour tester, donc ce n'est pas forcément évident d'aider.
    Juvamine

Discussions similaires

  1. Erreur 06550 invalid number or types of parameter
    Par freestyler1982 dans le forum JDBC
    Réponses: 3
    Dernier message: 17/11/2006, 13h49
  2. Erreur 01722 Invalide number
    Par freestyler1982 dans le forum Oracle
    Réponses: 8
    Dernier message: 09/11/2006, 15h28
  3. [SQL] Problème "Invalid number"
    Par EssaiEncore dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/12/2005, 10h45
  4. formatnumber et separateur de millier
    Par trialrofr dans le forum ASP
    Réponses: 6
    Dernier message: 27/01/2005, 14h21
  5. [PowerBuilder 9] EditMask : problème Invalid Number
    Par loicmillion dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 22/11/2004, 13h30

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