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 :

Problème de nombre sur ma vue.


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème de nombre sur ma vue.
    Bonjour,

    Je crée une vue sous oracle comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace view vue_chauffeur(CalcPceColisagePerso,Date_BE,Code_Pro) as select sum(case when iad.unite_commande='C' then
    iad.qte_commande*nvl(to_number(nvl(cpdc.colis_p,0),'9999.99'),0) else
    iad.qte_commande*nvl(pdt.unite_colisage,0) end) as CalcPceColisagePerso,
    iae.date_be, iad.code_pro
    from import_archives_detail iad, import_archives_entete iae, produit pdt, cadenciers_perso_det cpd, import_archives_detail_cpl iadc, cadenciers_perso_det_compl cpdc
    where iae.num_cde=iad.num_cde and iae.code_cli=iad.code_cli and iad.num_rayon=iae.num_rayon and iad.code_pro=pdt.code_pro
    and iad.x_id_ligne_televente=iadc.x_id_ligne_televente and iadc.d_id_cad_perso_det=cpd.id_cad_perso_det and cpd.id_cad_perso_det=cpdc.id_cad_perso_det_c
    and iae.date_be=110516 group by iae.date_be, iad.code_pro;
    La vue se crée sans soucis.
    Mais la requête select me donne une erreur :

    select * from vue_chauffeur
    *
    ERREUR à la ligne 1 :
    ORA-01722: Nombre non valide

    A savoir que la table cadenciers_perso_det_c n'a pas toujours un nombre correspondant au produit sur lequel je fais le calcul.
    Et même avec une jointure (+) entre cpd et cpdc même erreur.

    Quelqu'un pourrait il m'éclairer???

    Merci beaucoup!

  2. #2
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    De plus, le champ cpdc.colis_p est de type char (ex: 3 colis) mais je dois récupérer la valeur numérique, donc j'ai essayé aussi de faire le nvl(cpdc.colis_p,'0') mais j'ai toujours la même erreur.

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ce sql fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace view vue_chauffeur(CalcPceColisagePerso,Date_BE,Code_Pro) as select sum(case when iad.unite_commande='C' then
    iad.qte_commande*to_number(substr(cpdc.colis_p,0,2)) else
    iad.qte_commande*nvl(pdt.unite_colisage,0) end) as CalcPceColisagePerso,
    iae.date_be, iad.code_pro
    from import_archives_detail iad, import_archives_entete iae, produit pdt, cadenciers_perso_det cpd, import_archives_detail_cpl iadc, cadenciers_perso_det_compl cpdc
    where iae.num_cde=iad.num_cde and iae.code_cli=iad.code_cli and iad.num_rayon=iae.num_rayon and iad.code_pro=pdt.code_pro
    and iad.x_id_ligne_televente=iadc.x_id_ligne_televente and iadc.d_id_cad_perso_det=cpd.id_cad_perso_det and cpd.id_cad_perso_det=cpdc.id_cad_perso_det_c
    and iae.date_be=110516 group by iae.date_be, iad.code_pro;
    Je prend les 2 premiers caractères de cpdc_colis_p, mais c'est de la triche.
    Il faut que je puisse extraire le nombre de ce char.

  4. #4
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Peut etre que le format de votre colis_p n'est pas correct, par exemple des "," au lieu de "." ...

    Avez vous essayé ce genre de code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    to_number(nvl(cpdc.colis_p,0),'9999.99','NLS_NUMERIC_CHARACTERS='',.'''
    )
    bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  5. #5
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'ai déjà le NLS_NUMERIC_CHARACTERS forcé dans la base de registre de oracle home avec "." ","

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par chrispilote Voir le message
    De plus, le champ cpdc.colis_p est de type char (ex: 3 colis) mais je dois récupérer la valeur numérique, donc j'ai essayé aussi de faire le nvl(cpdc.colis_p,'0') mais j'ai toujours la même erreur.
    Et bien, l'erreur est ici, si vous avez ABC dans votre colonne, on ne peut pas convertir cette valeur en nombre.
    C'est ce que vous explique Oracle.

    Il faut que toute la colonne puisse être convertie en numérique pour pouvoir appliquer la fonction to_number.

  7. #7
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponse.
    J'opte donc pour le substr ça fonctionnera comme ça.

    Merci.

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

Discussions similaires

  1. [11gR2] Problème de droits sur des vues
    Par Oorph dans le forum SQL
    Réponses: 2
    Dernier message: 08/11/2013, 15h11
  2. problèmes de requêtes sur des vues
    Par krum dans le forum JPA
    Réponses: 0
    Dernier message: 23/06/2009, 10h48
  3. Problème de requête sur une vue Hibernate
    Par littlebear dans le forum Hibernate
    Réponses: 16
    Dernier message: 05/01/2009, 14h48
  4. Problème de grant sur une vue utilisant un db_link
    Par squallJ dans le forum Administration
    Réponses: 2
    Dernier message: 04/09/2007, 11h33
  5. Problème de terme sur "vue"
    Par AlexB59 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 08/06/2005, 11h27

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