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 :

Problème avec chiffre à virgule (décimal)


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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
    Points : 53
    Points
    53
    Par défaut Problème avec chiffre à virgule (décimal)
    Bonjour,

    J'essaye d'insérer un chiffre à virgule (décimal) dans ma base, mais oracle me renvois sans cesse le même message :
    valeur incohérente avec la précision indiquée pour cette colonne !
    Pourriez vous m'expliquer pourquoi ce message et comment faire pour procéder à l'insertion de mes données.

    Voici un exemple des quelques lignes que je souhaite insérer :
    INSERT INTO TPNotation VALUES (5, 'BD', 9, 06);
    INSERT INTO TPNotation VALUES (5, 'Math', 8.5, 14);
    INSERT INTO TPNotation VALUES (8, 'BD', 7.5, 18);
    INSERT INTO TPNotation VALUES (6, 'Math', 14, 07);
    INSERT INTO TPNotation VALUES (8, 'Stat', 18, 15);
    INSERT INTO TPNotation VALUES (1, 'Algo', 12, 13);
    INSERT INTO TPNotation VALUES (3, 'Algo', 11.5, 12.5);
    Et un autre de la structure de ma table :
    CREATE TABLE TPNotation(
    NumEtud INT,
    CodeMatiere VARCHAR2(20),
    NoteCC DECIMAL(3,2),
    NoteExam DECIMAL(3,2),
    CONSTRAINT pk_TPNotation PRIMARY KEY(CodeMatiere),
    CONSTRAINT fk_TPNotation_TPEtud FOREIGN KEY(NumEtud) REFERENCES TPEtudiant(CodeEtu)
    );
    A noter que je mettes NUMBER ou DECIMAL le problème reste le même
    Je vous remercie d'avance pour votre aides les mecs.

  2. #2
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    De ce que j'ai lu et testé,
    c'est 3 chiffres dont 2 après la virgule... donc typiquement, donc '14' de la deuxième ligne ne peut pas être inséré.

    Si c'est des notes, et que tu n'as pas une précision de plus d'un demi point, remplace ton
    decimal(3,2) par un decimal(3,1)

  3. #3
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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
    Points : 53
    Points
    53
    Par défaut
    Merci pour ta réponse Bstevy.
    En effet ce sont des notes avec une précision d'un demi point comme on peut le voir sur cette ligne :
    INSERT INTO TPNotation VALUES (3, 'Algo', 11.5, 12.5);
    .

    Par contre peux tu m'expliquer ce que cela peut bien changer de passer d'un decimal(3,2) à un decimal(3,1) ?.

  4. #4
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    La précision correspond au nombre de chiffre qui vont etre utilisés après la virgule sur l'ensemble des chiffres que tu as spécifiés (ici, 3)

    De ce fait, un décimal (3,2), c'est un nombre qui a cette tete : X.YZ, avec Y et Z pouvant être null (enfin, egale à 0 plutot)
    Alors que ton décimal décimal (3,1), c'est un nombre qui va etre de la forme : Y.Z ou XY.Z.

    Le 3 signifie que tu ne vas utiliser que XYZ, et le 2 signifie que YZ sont forcément derrière la virgule.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    Par défaut
    J'aime énormément l'explication de Pomalaix ici :
    http://www.developpez.net/forums/d10...n/#post5826226

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

Discussions similaires

  1. problèmes de chiffres après la virgule avec le C++
    Par membreComplexe12 dans le forum C++
    Réponses: 15
    Dernier message: 13/05/2011, 08h42
  2. [XL-2003] problème avec une macro décimale
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 25/11/2010, 10h34
  3. Problème avec la virgule - point
    Par Telemak dans le forum Général Java
    Réponses: 2
    Dernier message: 28/12/2008, 19h19
  4. problème avec / , chiffre et espace
    Par Tee shot dans le forum Langage
    Réponses: 5
    Dernier message: 04/06/2007, 10h27
  5. Rand avec chiffre à virgule
    Par Mikiman dans le forum Langage
    Réponses: 2
    Dernier message: 23/09/2006, 14h56

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