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 de retour de données


Sujet :

Oracle

  1. #1
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut Problème de retour de données
    Comment ce fait il que sous oracle, les null ne soient pas retourné dans le meme odre que sous les autres SGBD? J'ais crée 3 select pour Syb, mS SQL et ORC, les trois marche mais pour oracle, les valeurs retournées ne sont pas dans le meme ordre...Pourquoi?
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    NULL n'a pas de valeur alors l'ordre est arbitraire... par ailleurs, si tu ne nous indiques pas la requêtes que tu exécutes on va avoir du mal à répondre

  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
    Points : 3 597
    Points
    3 597
    Par défaut
    En fait, cela dépend si la requête a une clause ORDER BY ou non. Sans clause ORDER BY, rien n'est censé être trié. Sinon, avec ORDER BY ... ASC, les valeurs nulles sont à la fin et ORDER BY ... DESC, les valeurs nulles sont au début. On peut changer cet ordre avec la clause NULLS FIRST ou NULLS LAST.

    Voir http://download-uk.oracle.com/docs/c...3a.htm#2065648:

    NULLS FIRST | NULLS LAST
    Specify whether returned rows containing null values should appear first or last in the ordering sequence.

    NULLS LAST is the default for ascending order, and NULLS FIRST is the default for descending order
    .

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Oui, en sybase l'expression "NULL = NULL" renvoi VRAI et en oracle la meme expression renvoi FAUX. Contrairement à sybase, oracle considère que "NULL" n'est pas une valeur mais un indicateur qui veut dire "On sait pas", donc la comparaison d'une valeur inconnue à une autre valeur inconnue doit renvoyer un resultat inconnu, et dans le doute oracle répond FAUX.

    Mais c'est vrai que cette différence de comportement entre les SGBD est vraiment pénible...

  5. #5
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Voici a quoi ressemble mon select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select distinct 3, numgttrc, intgttrc, appgttrc, intgtapp, nvl(catgttrc, 'SANS'), null 
    from gttrc rc, gtapp pp, gttrd rd 
    where pp.numgtapp=rc.appgttrc
    and rc.numgttrc=rd.trcgttrd
    union select distinct 1, null, null, numgtapp, intgtapp, null, null 
    from gttrc rc, gtapp pp, gttrd rd
    where pp.numgtapp=rc.appgttrc
    and rc.numgttrc=rd.trcgttrd 
    union select distinct 2, null, null, numgtapp, intgtapp, nvl(catgttrc, 'SANS'), null 
    from gttrc rc, gtapp pp, gttrd rd
    where pp.numgtapp=rc.appgttrc
    and rc.numgttrc=rd.trcgttrd
     order by 1, 5, 4, 6, 2
    Oui en fait c'est l'ORDER BY qui fais tout. Et donc c'est un réel probleme de divergence entre les bases. Il n'y a aucun moyen d'y remédier si ce n'est en programant.... Bon je vais utiliser JAVA alors. Merci beaucoup.
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  6. #6
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Citation Envoyé par remi4444
    Oui, en sybase l'expression "NULL = NULL" renvoi VRAI et en oracle la meme expression renvoi FAUX. Contrairement à sybase, oracle considère que "NULL" n'est pas une valeur mais un indicateur qui veut dire "On sait pas", donc la comparaison d'une valeur inconnue à une autre valeur inconnue doit renvoyer un resultat inconnu, et dans le doute oracle répond FAUX.

    Mais c'est vrai que cette différence de comportement entre les SGBD est vraiment pénible...
    pour éviter les prises de tête, il vaut mieux TOUJOURS interpréter NULL si c'est un critère déterminant... pour Oracle, la fonction NVL peut tout à fait être utilisé dans ce but...

    exemple :
    prérequis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table test (id number, val varchar2(10));
     
    insert into test values (1, 'gdgdgd') ;
    insert into test values (2, Null);
     
    commit ;
    test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from test where val is null
    peut être remplacé par l'interprétation de NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from test where nvl(val, 'x') = 'x'
    et dans ce cas, ça fonctionnera toujours...


    EDIT :
    tu peux aussi utiliser le NVL dans un ORDER BY...
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  7. #7
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Oui ben c'est ce a quoi j'ais du me résigner. nvl... pour is null et il y a plein d'autres différence comme ca. Vous ne savez pas si il existe un dico des différences?

    Si vous pouviez également avoir la traduction sous DB2 ca serais cool aussi. Merci d'avance
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  8. #8
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    désolé, aucune idée pour le dico...

    mais pour revenir à ton problème concret.. pourquoi "j'ai du me résigner à nvl..." ? ...on sent une grande tristesse/lassitude dans tes propos...

    ça te pose un problème d'utiliser nvl ?
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  9. #9
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    non pas du tout mais comme je dois créer des vues pour chaque Base, ca m'aurais évité de les réecrire... Bref j'aurais pu avoir une seule vue pour chaque SGBD.

    Je pense avoir trouvé quelquechose pour faire office de dictionnaire. Je vous remercie pour votre aide
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  10. #10
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    tu peux nous en faire profiter ?
    ce serait sympa !
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  11. #11
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Je ne peu pas vous envoyé cette doc et je ne sais pas envoyé non plus d'images... alors si quelqu'un m'aide pourquoi pas poster un screen shot...
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  12. #12
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    lorsque tu envoies une réponse, il y a en-dessous de la zone de composition de texte un bouton "gérer les pièces jointes" dans un groupbox "Fichiers attachés"...

    du coup tu pourrais nous attacher le document qui va bien...
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  13. #13
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    YES j'y suis arrivé... désolé pour la qualité...

    Je vous ais mit le tableau en ZIP
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  14. #14
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    merci beaucoup pour le document ! il sera certainement utile à plus d'un !

    sinon je vois juste une chose qui me surprends... il est noté dans ce document que pour mettre NULL dans une colonne sous Oracle, il faut caster dans le type de la colonne (to_number(null), to_char(null), etc...) or dans Oracle tu peux mettre NULL tout simplement sans passer par les fonctions de conversion...
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  15. #15
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    La sincèrement je ne sais pas quoi te dire... si ce n'est que ca ne m'a pas choqué...
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  16. #16
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    bouarf... c'est pas bien important...
    c'est vraiment juste une petit précision !

    sinon merci encore pour avoir partagé ce document !
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  17. #17
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    De rien de rien c'est bien normal... a bientot !!!
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  18. #18
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Citation Envoyé par Yorglaa
    merci beaucoup pour le document ! il sera certainement utile à plus d'un !

    sinon je vois juste une chose qui me surprends... il est noté dans ce document que pour mettre NULL dans une colonne sous Oracle, il faut caster dans le type de la colonne (to_number(null), to_char(null), etc...) or dans Oracle tu peux mettre NULL tout simplement sans passer par les fonctions de conversion...
    C'est pas forcément si idiot de se donner comme discipline de caster les null. Lorsqu'on assigne un null à une variable ou à une colonne, pas de problème car le type est donné par cette variable ou colonne. Par contre lorsque on utilise null dans une vue ou une requete, on laisse oracle choisir le type, ce qui peut engendrer des comportement inatendus pour les traitement ultérieurs.

  19. #19
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Ok alors en fait le cast n'est pas forcément nécessaire... c'est Yorglaa qui va etre content.
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  20. #20
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    ouaip... content !!
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de retour de données;
    Par Defoe dans le forum Débuter
    Réponses: 4
    Dernier message: 08/02/2011, 19h47
  2. [XL-2007] Probléme de retour de donnée
    Par squel59 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2009, 19h55
  3. [Designer] Problème de transfert de données entre modul
    Par BILLYPATOU dans le forum Designer
    Réponses: 11
    Dernier message: 09/03/2004, 18h15
  4. [Interbase 7] Problème d'insertion de données
    Par Tuscelan dans le forum InterBase
    Réponses: 12
    Dernier message: 19/11/2003, 22h58
  5. problème xsl : inclure une donnée xml dans une balise html
    Par djodjo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/01/2003, 09h24

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