1. #1
    Membre à l'essai
    Inscrit en
    avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 20
    Points : 14
    Points
    14

    Par défaut Quel type de champ pour un format monétaire

    Bonjour,

    Ma question est simple : quel type de format dois-je choisir pour stocker des données monétaires : float, decimal ou ?
    Mes champs sont destinés à stocker des montants de vente ou d'achat positif ou négatif. Je ne souhaite avoir que 2 chiffres après la virgule.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 311
    Points : 22 070
    Points
    22 070

    Par défaut

    Sans conteste, le DECIMAL correspond à ton besoin.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    5 537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : octobre 2007
    Messages : 5 537
    Points : 11 337
    Points
    11 337

    Par défaut

    subtype DECIMAL is NUMBER(38,0)
    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
     
    Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 
     
    SQL> create table t_dec (a decimal);
    Table created
     
    SQL> insert into t_dec values (2.23);
    1 row inserted
     
    SQL> select * 
      2    from t_dec
      3  /
                                          A
    ---------------------------------------
                                          2
     
    SQL>
    Avec Oracle utilisez Number(15,2). Float/double est inapproprié pour ce type d'application.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 311
    Points : 22 070
    Points
    22 070

    Par défaut

    En effet, j'avais oublié que le DECIMAL d'Oracle n'était pas équivalent au NUMBER.
    Ce qui est important, c'est que pour du monétaire, il faut un nombre de décimales fixe et fuir les flottants qui ont des valeurs approximatives (ce qui n'est pas conciliable avec les contraintes d'un calcul monétaire, comptable ou équivalent).
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet
    Inscrit en
    juin 2007
    Messages
    1 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : juin 2007
    Messages : 1 260
    Points : 2 080
    Points
    2 080

    Par défaut

    Citation Envoyé par mnitu Voir le message
    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
     
    Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 
     
    SQL> create table t_dec (a decimal);
    Table created
     
    SQL> insert into t_dec values (2.23);
    1 row inserted
     
    SQL> select * 
      2    from t_dec
      3  /
                                          A
    ---------------------------------------
                                          2
     
    SQL>
    Avec Oracle utilisez Number(15,2). Float/double est inapproprié pour ce type d'application.
    je plussoie des deux mains
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 10.2.0.4 (RAC) - Forms6i patch 17 - Toad 12 - sharePoint 2010

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    3 196
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : décembre 2002
    Messages : 3 196
    Points : 6 317
    Points
    6 317

    Par défaut

    Citation Envoyé par mnitu Voir le message
    ...
    DECIMAL n'apporte rien vu qu'il est converti en NUMBER, mais à part ça, je ne vois pas de problème spécifique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create table demo (a decimal(5,2));
    insert into demo values(123.45);
     
    select * from demo;
     
     
             A
    ----------
        123,45
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

  7. #7
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet
    Inscrit en
    juin 2007
    Messages
    1 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Bâtiment

    Informations forums :
    Inscription : juin 2007
    Messages : 1 260
    Points : 2 080
    Points
    2 080

    Par défaut

    Sauf erreur, DECIMAL n'est pas un type "natif" d'Oracle. Et donc , il n'est pas reconnu par certains outils d'ORACLE (Forms en particulier).
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 10.2.0.4 (RAC) - Forms6i patch 17 - Toad 12 - sharePoint 2010

  8. #8
    Membre régulier
    Homme Profil pro
    Expert Oracle
    Inscrit en
    mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : mai 2009
    Messages : 92
    Points : 70
    Points
    70

    Par défaut

    Salut,

    Je te recommande le type NUMBER (18,3)

    C'est simple et efficace.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Responsable Performance Applicative
    Inscrit en
    janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable Performance Applicative
    Secteur : Bâtiment

    Informations forums :
    Inscription : janvier 2015
    Messages : 6
    Points : 10
    Points
    10

    Par défaut

    La précision peut varier selon la ou les devises utilisées.

Discussions similaires

  1. Quel type de champ pour case à cocher
    Par qmike dans le forum PHP & MySQL
    Réponses: 2
    Dernier message: 24/10/2012, 19h04
  2. quel type de champ pour un format monétaire
    Par tavarlindar dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/08/2008, 23h38
  3. Quel type de champs pour les case a cocher
    Par leroidje dans le forum Autres
    Réponses: 1
    Dernier message: 15/02/2008, 13h54
  4. quel type de champ pour un tableau serializé
    Par lodan dans le forum PHP & MySQL
    Réponses: 2
    Dernier message: 17/11/2006, 14h37
  5. [SQL Server] Quel type de champ pour du commentaire
    Par brmartin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/07/2006, 12h51

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