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 :

DECODE type de données incohérents


Sujet :

SQL Oracle

  1. #1
    Membre habitué Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Points : 162
    Points
    162
    Par défaut DECODE type de données incohérents
    Bonjour,

    Dans une requête assez complexe, je me retrouve avec un cas de donnée null qui me sort une exception et je ne sais pas pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select decode(nvl(wm_concat(null),''),'',0,1) from dual
    Erreur : ORA-00932: types de données incohérents ; attendu : - ; obtenu : CLOB

    Merci d'avance

  2. #2
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Car wm_concat retourne un CLOB, il faut donc ajouter un TO_CHAR pour retourner un VARCHAR2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECODE (NVL (TO_CHAR (wm_concat (NULL)), ''), '', 0, 1)
    Par contre, il faut être sûr que dans vos données le wm_concat ne retourne pas une chaîne de longueur supérieure à 4000 caractères.

    Une question , si vous utilisez wm_concat au lieu de LISTTAG c'est parce que vous êtes sous une versione antérieure à Oracle 11G ?

  3. #3
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Bibeleuh Voir le message
    Car wm_concat retourne un CLOB, il faut donc ajouter un TO_CHAR pour retourner un VARCHAR2.

    ...
    Wm_concat renvoie varchar2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> desc wmsys.wm_concat
    Parameter Type     Mode Default? 
    --------- -------- ---- -------- 
    (RESULT)  VARCHAR2               
    P1        VARCHAR2 IN            
     
    SQL>

  4. #4
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Wm_concat renvoie varchar2

    autant pour moi , dans ce cas je ne comprends pas l'intérêt de faire un CAST afin de ne pas avoir d'erreurs de type

  5. #5
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Bibeleuh Voir le message
    autant pour moi ...
    Au temps... ou autant pour moi

  6. #6
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    http://fr.wiktionary.org/wiki/autant_pour_moi

    C'est égal mais je ne vois toujours pas l'intérêt du TO_CHAR , c'est Oracle qui n'arrive pas à typer les NULL ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/01/2014, 15h20
  2. Réponses: 2
    Dernier message: 20/03/2011, 19h37
  3. ORA-00932 : types de données incohérents
    Par nawal59 dans le forum Designer
    Réponses: 4
    Dernier message: 26/07/2010, 15h49
  4. Erreur ORA-00932 types de données incohérents
    Par paradeofphp dans le forum Oracle
    Réponses: 7
    Dernier message: 21/05/2007, 10h56
  5. types de données incohérents
    Par afaraji dans le forum Oracle
    Réponses: 4
    Dernier message: 22/12/2005, 13h52

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