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 :

Valeur incohérente lors d'une requête


Sujet :

Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Clavardeur en tout genre
    Inscrit en
    Août 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Clavardeur en tout genre

    Informations forums :
    Inscription : Août 2019
    Messages : 60
    Points : 59
    Points
    59
    Par défaut Valeur incohérente lors d'une requête
    Bien le bonjour,

    je suis face à une erreur et j'avoue ne pas comprendre d'où cela provient.

    Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT NU_INT FROM EN_COURS
    WHERE CODE_FOUR LIKE '%ARM%'
    AND INT_CM IN (SELECT C_METIER FROM METIERS WHERE PARENT = 'DTM2E')
    Et l'erreur :
    ORA-01438 :: valeur incohérente avec la précision indiquée pour cette colonne.

    Auriez vous une piste de travail ? Me dire ce qui ne fonctionne pas dans cette requête ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 397
    Points : 39 932
    Points
    39 932
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Sans le DDL complet des tables en jeu, il faut une boule de cristal...

    Mais a priori la colonne INT_CM n'est pas du même type que la colonne C_METIER

  3. #3
    Membre du Club
    Homme Profil pro
    Clavardeur en tout genre
    Inscrit en
    Août 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Clavardeur en tout genre

    Informations forums :
    Inscription : Août 2019
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    Pour la table
    METIERS : "C_METIER" VARCHAR2(20 BYTE)
    EN_COURS : "INT_CM" VARCHAR2(20 BYTE)

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 148
    Points : 9 612
    Points
    9 612
    Par défaut
    Dans ta requête, tu as 3 points à vérifier :

    - tu fais Code_four like '...' :est-ce que code_four est une chaine de caractères ?
    - tu fais int_cm in ( select c_metier ...) : ce point là a été vérifié, les types sont compatibles.
    - tu fais PARENT = 'DTM2E' : est-ce que parent est une chaine de caractères ?

  5. #5
    Membre du Club
    Homme Profil pro
    Clavardeur en tout genre
    Inscrit en
    Août 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Clavardeur en tout genre

    Informations forums :
    Inscription : Août 2019
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    ok j'ai vérifié pour les éléments que tu as pointé :

    "CODE_FOUR" CHAR(10 BYTE),
    "PARENT" VARCHAR2(255 BYTE),
    "C_METIER" VARCHAR2(20 BYTE),
    "INT_CM" VARCHAR2(20 BYTE),

    Il me semble que tout concorde.

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 148
    Points : 9 612
    Points
    9 612
    Par défaut
    Le code ORA-01438 dit 'Value larger than specified precision allowed' : par exemple on a une chaine déclarée en 10 caractères, et on veut écrire ANTICONSTITUTIONNELLEMENT dans cette chaine.
    Ici, rien de flagrant.

    Cherchons pas à pas.
    Teste ces différentes requêtes, pour voir celles qui plantent, et celles qui fonctionnent, et tu pourras faire le bon diagnostic :

    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
     
    SELECT CODE FROM EN_COURS
    WHERE CODE_FOUR LIKE '%ARM%'
    AND INT_CM IN (SELECT C_METIER FROM METIERS WHERE PARENT = 'DTM2E')
     
    SELECT NU_INT FROM EN_COURS
    WHERE CODE_FOUR LIKE '%ARM%'
     
    SELECT NU_INT FROM EN_COURS
    WHERE  INT_CM IN (SELECT C_METIER FROM METIERS WHERE PARENT = 'DTM2E')
     
    SELECT NU_INT FROM EN_COURS
    WHERE CODE_FOUR LIKE '%ARM%'
    AND INT_CM IN (SELECT C_METIER FROM METIERS )
     
    SELECT NU_INT FROM EN_COURS
    WHERE CODE_FOUR LIKE '%ARM%'
    AND INT_CM IN (SELECT C_METIER FROM METIERS WHERE PARENT = rpad('DTM2E',255, ' ') )

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 162
    Points : 1 959
    Points
    1 959
    Par défaut
    Bonjour,

    Le problème ici sera plus sur une colonne numérique. Peut-être NU_INT?
    Cela dit je m'attendrais à avoir ce genre d'erreur sur un update ou un insert. Tu es sûr que c'est cette requête qui plante?

Discussions similaires

  1. Valeur par défaut lors d'une requête SELECT
    Par LordVoid dans le forum Débuter
    Réponses: 5
    Dernier message: 09/08/2010, 13h00
  2. Comment récupérer la valeur de Expr1 dans une requête ?
    Par Tchupacabra dans le forum Access
    Réponses: 2
    Dernier message: 19/12/2005, 16h16
  3. [MySQL] Perte d'information lors d'une requête de visualisation
    Par niccco dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 21/10/2005, 14h46
  4. transmettre valeur d'un champ à une requête
    Par zut94 dans le forum Access
    Réponses: 3
    Dernier message: 13/10/2005, 17h23
  5. Mauvais noms de colonnes lors d'une requête
    Par nmathon dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/04/2004, 08h27

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