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 :

[11g] Précision SELECT ou affichage ?


Sujet :

SQL Oracle

  1. #21
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    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 611
    Par défaut
    Citation Envoyé par lc2ms1978 Voir le message
    Je n'ai pas tout compris lol. ...
    Qu’est-ce que vous n’avez pas compris ? Et par ailleurs qu’est-ce que vous avez compris ?

  2. #22
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 41
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Une fois le plan élaboré Oracle va aller dans un bloc des données identifier l'enregistrement en question et va lire la séquencé des octets qui est mise en évidence par la fonction dump.
    Si la commande est issue d'un outil comme sqlplus ou Toad etc. cette suite des octets représentant une valeur numérique est transformée dans une chaine des caractères lisible par l'opérateur humain, en utilisant éventuellement quelques paramètres qui gèrent l'affichage (numwidth, numformat, column sous sqlplus).
    Et si cette même requête est exécuté par un langage de programmation 3G genre java ou c?
    Dans ce cas il faut bien s'appeler qu'il y a une différence entre la précision que Oracle est capable de gérer et celle des variables numériques (float double) du langage choisies comme cible d'affectation
    Je n'ai pas compris comment se fait le plan Oracle. Et de toute façon, parler de récupération de séquences d'octets est pour moi trop proche du fonctionnement machine...

    Je comprend de ton message que selon toi chaque outil a sa propre façon de transformer une même série d'octets afin d'en produire un affichage compréhensible et qu'il pourrait y avoir des différences lors de l'affection dans le langage cible.

    En tous cas je ne pense pas que l'ETL Informatica soit moins précis (l'option high précision que j'ai activé permet de gérer 28 décimale).

  3. #23
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    J'aimerais être sur que Toad ramène bien ce qu'il faut.
    Que donne le select * from toto, exécuté normalement (avec CTRL+Entrée)
    Ce qu'a dit Waldar c'est qu'exécuté en tant que script, le résultat est arrondi, mais normalement exécuté, dans la data_grid, tu dois avoir la précision max.

  4. #24
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    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 611
    Par défaut
    OK. Laissez tomber le plan d’exécution d’Oracle.
    1. Un util qui interrogé Oracle peut décider d’afficher un nombre des décimales inférieur à la précision avec laquelle la valeur est stockée dans la base. Parfois des paramètres propres à l’outil permettent d’augmenter cette précision.
    2. Oracle est un peu spécial dans la gestion des valeurs numériques : il peut stocker des valeurs avec une précision bien supérieure que la plupart des langages de programmation. Ce fait peut avoir pour conséquence une perte de précision lors du transfert des valeurs entre Oracle et le langage.
    3. les outils qui interrogent Oracle sont écrits dans des langages de programmation qui ne permettent pas forcement de garder la précision. Les types usuels : float et double ont une précision inférieure à celle du Number d’Oracle.

    Je ne connais pas Informatica mais si vous « savez » qu’il est capable de gérer la même précision qu’Oracle alors soit vous ne devez pas avoir des problèmes soit vous devez étudier attentivement la documentation.

    Dernière remarque : utiliser la fonction dump c’est proche du langage machine.

  5. #25
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    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 611
    Par défaut
    Parfois un exemple est plus parlant
    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
    24
    25
    26
    27
    28
    29
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> set serveroutput on
    SQL> 
    SQL> Declare
      2    a   number(38,28);
      3    b   Binary_Float;
      4    c   Binary_Double;
      5  Begin
      6    Select toto, toto, toto
      7      Into a, b, c
      8      From toto;
      9    --
     10    Dbms_output.put_line('Number ='||To_Char(a, '999D99999999999999999999'));
     11    Dbms_output.put_line('Float  =' ||To_Char(b, '999D99999999999999999999'));
     12    Dbms_output.put_line('Double ='||To_Char(c, '999D99999999999999999999'));
     13    --
     14  End;
     15  /
     
    Number = 123,12345678901234567000
    Float  = 123,12345900000000000000
    Double = 123,12345678901235000000
     
    PL/SQL procedure successfully completed
     
    SQL>

  6. #26
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 41
    Par défaut
    Citation Envoyé par McM Voir le message
    J'aimerais être sur que Toad ramène bien ce qu'il faut.
    Que donne le select * from toto, exécuté normalement (avec CTRL+Entrée)
    Ce qu'a dit Waldar c'est qu'exécuté en tant que script, le résultat est arrondi, mais normalement exécuté, dans la data_grid, tu dois avoir la précision max.
    voila ce que donne le select * from toto, exécuté normalement (avec CTRL+Entrée) :

    123.123456789012

Discussions similaires

  1. Requète select et affichage des données.
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/10/2009, 10h09
  2. <html:select> pb affichage liste
    Par Melaba dans le forum Struts 1
    Réponses: 14
    Dernier message: 01/08/2008, 17h19
  3. [Spring Portlets] select paramétré+affichage jsp
    Par myriam818 dans le forum Spring Web
    Réponses: 0
    Dernier message: 06/12/2007, 18h42
  4. Pb requete select et affichage datas
    Par lorderon85 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/01/2007, 18h57
  5. [MySQL] select avec affichage conditionnel
    Par encoupe dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/11/2005, 00h46

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