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

Langage SQL Discussion :

Erreur nombre non valide


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Erreur nombre non valide
    Bonjour,

    j'ai besoin d'aide là je craque.

    Un peu de contexte, mon serveur de BDD vient d'être migré en version 19c et pour pouvoir me connecter correctement mon fournisseur m'a fait installer le client 12 sur mon poste. Depuis ce changement je rencontre des problèmes sur certaines de mes requêtes qui fonctionnaient parfaitement jusqu'ici.

    La requête qui pose problème est la suivante :
    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
    INSERT INTO z_qlik_paie
    SELECT  LS_NUMBULPAI, to_char(LS_DATDEB,'YYYYMM') AS MOIS_REF, LS_AE_AGEETA, SubStr(LS_AE_AGEETA,4,5), LS_RU_NUMRUB, LS_BASNBREUR, LS_TXPUSAL,
            CASE WHEN LS_INDTYPRUBPAI = 1 THEN (Sum(LS_MTSALEUR) + Sum(LS_MTEMPEUR))
                 WHEN LS_INDTYPRUBPAI = 2 THEN ((Sum(LS_MTSALEUR) * -1) + Sum(LS_MTEMPEUR))
            END AS MONTANT,
            LS_DESLIGBUL, LS_TI_NUMTIE, LS_BU_CODBUD, LS_GE_CODGES, LS_NA_CODNAT, LS_NA_CODNOR, LS_SR_CODSOURUB, LS_SV_CODSER, LS_AN_CODANT, LS_CA_CODANA, LS_CA_TYPANA,
            CASE WHEN LS_INDTYPRUBPAI = 1 AND LS_MTSALEUR != 0 THEN 'Brut'
                 WHEN LS_INDTYPRUBPAI = 2 AND LS_MTSALEUR != 0 THEN 'Charge Salariale'
                 ELSE 'Charge Patronale'
            END AS TYPE_LIGNE, NULL, LS_AA_NUM
    FROM    H_lig_sal_bis
    WHERE   ls_datdeb >= To_Char('01/01/2018','dd/mm/yyyy')
    AND     ls_datdeb <= To_Char('01/' || SubStr(&&1,5,2) || '/' || SubStr(&&1,1,4),'dd/mm/yyyy')
    AND     LS_SEQIMP <> 0
    AND     (LS_SEQTRT BETWEEN 0 AND 8999 OR LS_SEQTRT IN (9954,9955,9957))
    AND     (LS_MTSALEUR <> 0 OR LS_MTEMPEUR <> 0)
    AND     LS_RU_NUMRUB NOT IN (321,1744,5905,8083)
    AND     SubStr(LS_AE_AGEETA,1,3) IN ('001','002','007','008')
    GROUP BY LS_NUMBULPAI, LS_DATDEB, LS_AE_AGEETA, LS_RU_NUMRUB, LS_BASNBREUR, LS_TXPUSAL, LS_INDTYPRUBPAI, LS_DESLIGBUL,LS_MTSALEUR,
             LS_TI_NUMTIE, LS_BU_CODBUD, LS_GE_CODGES, LS_NA_CODNAT, LS_NA_CODNOR, LS_SR_CODSOURUB, LS_SV_CODSER, LS_AN_CODANT, LS_CA_CODANA, LS_CA_TYPANA, LS_AA_NUM
    ORDER BY LS_AE_AGEETA, LS_DATDEB DESC;

    A chaque exécution j'obtiens l'erreur ORA-01722: Nombre non valide en ligne 15 position 64 soit sur la ligne AND (LS_SEQTRT BETWEEN 0 AND 8999 OR LS_SEQTRT IN (9954,9955,9957)). A priori 9955 n'est pas un chiffre mais franchement je ne vois pas pourquoi.

    Je suppose que l'erreur est ailleurs mais où ?

    HELP PLEASE !!!

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    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 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Dans ce genre de cas de figure, le plus simple est d'y aller par étape, en commentant les bouts de requête suspects et en les décommentant morceau par morceau jusqu'à localiser exactement le hic.

    À tenter : ajouter des espaces après les virgules dans LS_SEQTRT IN (9954,9955,9957)) à remplacer donc par LS_SEQTRT IN (9954, 9955, 9957)), parfois ça ne fonctionne pas sans ces espaces (du coup je les mets systématiquement).

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Hélas déjà tenté mais je viens de réessayer dans le doute sans succès.

    J'ai déjà pas mal décomposé pour essayer de m'en sortir mais je vais réessayer.

    En tout cas merci pour la réponse

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bon finalement j'ai trouvé et l'erreur était bien ailleurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE   ls_datdeb >= To_Char('01/01/2018','dd/mm/yyyy')
    AND     ls_datdeb <= To_Char('01/' || SubStr(&&1,5,2) || '/' || SubStr(&&1,1,4),'dd/mm/yyyy')
    il fallait corriger les to_char en to_date

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur 'Nombre non valide'
    Par Touty11 dans le forum SQL
    Réponses: 4
    Dernier message: 25/03/2012, 19h07
  2. ORA-01722: Nombre non valide
    Par misa dans le forum Oracle
    Réponses: 4
    Dernier message: 18/12/2007, 16h23
  3. Réponses: 7
    Dernier message: 03/05/2007, 13h44
  4. Réponses: 8
    Dernier message: 08/09/2006, 15h09
  5. Réponses: 7
    Dernier message: 07/03/2006, 10h34

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