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 :

Champ BCD & Champ DOUBLE PRECISION


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut Champ BCD & Champ DOUBLE PRECISION
    Bonjour tout le monde,

    sous Oracle, je crée des tables avec des champs numériques DOUBLE PRECISION. Lorsque je souhaite faire une requête sur cette table en faisant un SELECT SUM(Chp)/SUM(Chp2).... j'ai un overflow car les champs sont de type BCD.

    J'ai essayé de créer les champs non pas en DOUBLE PRECISION mais en NUMBER(15,4) mais ça me fait la même chose.

    Je ne suis pas spécialiste Oracle, ce problème est-il connu ? Fais-je mal les choses ? Y-a-t-il une astuce pour pas avoir ce genre de soucis ?

    Pour info, je travaille depuis Delphi et utilise les composants dbExpress.

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par WebPac
    j'ai un overflow car les champs sont de type BCD.
    message d'erreur oracle?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    sous Oracle, je crée des tables avec des champs numériques DOUBLE PRECISION.
    Merci de poster le CREATE TABLE correspondant avec la version d'Oracle.

  4. #4
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut
    La création de la table :
    CREATE TABLE MATABLE (VILLE VARCHAR2(15), EXERCICE DOUBLE PRECISION, MOIS DOUBLE PRECISION, CA DOUBLE PRECISION)
    Le message d'erreur n'est pas un message d'oracle, mais je n'ai ce message d'erreur que lorsque je travaille avec Oracle, je fais les même traitements avec d'autes bases de données comme Firebird, SQL Serveur ou MySQL et je n'ai pas d'erreur.

    Apparemment, l'erreur vient du fait que les champs sont de type BCD.

    La version d'Oracle que j'utilise est la version 10g Express, mais j'ai des utilisateurs qui ont des versions 8i à 10 et qui ont les mêmes erreurs.

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    double precision est un float dans oracle

    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
     
    CREATE TABLE MATABLE (VILLE VARCHAR2(15), EXERCICE DOUBLE PRECISION, MOIS DOUBLE PRECISION, CA DOUBLE PRECISION)
    Table created
     
    select data_type, data_length, data_precision, column_name from user_tab_columns where table_name='MATABLE'
    DATA_TYPE DATA_LENGTH DATA_PRECISION COLUMN_NAME                   
    --------- ----------- -------------- ------------------------------
    VARCHAR2           15                VILLE                         
    FLOAT              22            126 EXERCICE                      
    FLOAT              22            126 MOIS                          
    FLOAT              22            126 CA                            
    4 rows selected
     
     
    insert into matable values (1,1/3,1/7,1/13)
    1 row inserted
     
     
    select sum(exercice)/sum(mois) from matable
    SUM(EXERCICE)/SUM(MOIS)
    -----------------------
           2.33333333333333
    1 row selected


    n'ayant pas Delphi, je ne peux guère t'aider plus

  6. #6
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut
    Dommage.

    En continuant mes recherches, j'ai trouvé ça dans l'aide au sujet des champs BCD :
    De même, les données numériques qui ne peuvent tenir dans un double sont directement mappées au format décimal codé binaire (BCD).
    J'ai l'impression du fait du grand nombre de décimales qu'il convertit le champ en BCD mais il a un problème de précision et fait un overflow au niveau du trop grand nombre de décimales.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/08/2008, 12h46
  2. Insert dans des champs INT avec des doubles quotes
    Par bannik dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/04/2008, 17h44
  3. Réponses: 6
    Dernier message: 07/04/2008, 01h41
  4. Renseigner un champ DATE par un double-clic
    Par curt dans le forum IHM
    Réponses: 2
    Dernier message: 13/11/2007, 15h07
  5. Réponses: 2
    Dernier message: 30/06/2004, 13h22

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