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 :

Problème d'insert data Oracle


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Par défaut Problème d'insert data Oracle
    Bonjour,

    Voici mon problème Oracle du jour :
    je souhaite faire un insert en base de la ligne suivante mais insert échoue, je récupère une erreur Oracle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Ligne à insérer :
    INSERT INTO "COMMANDE" VALUES ('10248', 'VINET', '5', TO_DATE('1996-07-04 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-07-16 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '3', '32.38');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Erreur Oracle :
    Rapport d'erreur -
    Erreur SQL : ORA-01722: Nombre non valide
    01722. 00000 -  "invalid number"
    *Cause:    
    *Action:
    Je pense que le problème vient de la dernière colonne ('32.38') car quand j'enlève les simple côtes L'insert fonctionne sans problème.
    Ma colonne est de type
    NUMBER DEFAULT 0
    .

    Quelqu'un pourrais-t'il me dire s'il est possible de modifier une variable dans Oracle afin que l'insertion sur la ligne fonctionne ?; ou alors éventuellement quel type donner à cette colonne.

    Ps : j'ai un fichier de plus de 5000 lignes à insérer donc enlever les double côtes sur le fichier n'est pas la solution la plus simple.

    Merci de votre aide.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Par défaut
    Bonsoir,

    Si tu as les autorisations pour modifier le type d'une colonne tu peux convertir ta colonne en VARCHAR2(x) avec cette requête :

    ==> ALTER TABLE nom_table MODIFY (nom_colonne VARCHAR2(x));

    x étant le nombre de caractères maximum que tu pourras intégrer dans ta colonne.

    Ta valeur ne sera pas reconnue en tant que nombre mais en chaîne de caractères.

    Avec ce type tu peux laisser les simples quotes.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Sûrement pas. On ne touche pas à la base.

    On prend son courage à deux mains et on modifie l'entrée ou on demande à celui qui l'a généré de le refaire.

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Quand vous insérez une valeur en dur dans une colonne numérique, cette valeur doit être spécifiée sans apostrophes, avec impérativement le point comme symbole décimal.
    Donc 32.38 sans apostrophes, c'est parfait.

    En revanche, si vous mettez cette valeur entre apostrophes, elle est initialement considérée comme une chaîne de caractères, et convertie en nombre en prenant en compte le symbole décimal en vigueur dans la session.
    Si vous êtes en paramétrage français, c'est la virgule qui est attendue comme symbole décimal, et dans ce cas il faut avoir '32,38', et non '32.38'.

    Dans votre cas, la solution la plus simple sera de modifier le paramétrage de votre session le temps de faire l'insertion, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter session set nls_numeric_characters='. ';
    Le point est alors interprété comme symbole décimal, et l'espace comme séparateur de milliers, et '32.38' sera désormais valable.

Discussions similaires

  1. [Oracle] problème d'insertion de données dans une table sous oracle
    Par Zombiman dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/05/2009, 14h58
  2. Problème d'insertion dans une table sous oracle
    Par admcent dans le forum Administration
    Réponses: 4
    Dernier message: 24/10/2007, 13h58
  3. Problème d'insertion jsp/oracle
    Par samil dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 26/07/2007, 17h49
  4. [Oracle] Problème d'insertion de ligne via JDBC
    Par Invité dans le forum JDBC
    Réponses: 3
    Dernier message: 17/07/2007, 12h21
  5. Réponses: 1
    Dernier message: 21/12/2006, 17h06

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