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 :

erreur execution fonction


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut erreur execution fonction
    Bonjour à Tous, J'ai 1 petit soucis avec une requête qui doit me ramener le nomfou, satisf et CA, puis ensuite executer la fonction FN_SATISFATION qui me ramène le commentaire en fonction des indices de satisfaction par rapport au CA réalisé.

    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
     
    create or replace function FN_SATISFACTION (indice int) return varchar2 as
     
    begin
     
        RETURN
          case
            when indice is null then 'Sans commentaires'
            when indice between 1 and 2 then 'Mauvais'
            when indice between 3 and 4 then 'Passable'
            when indice between 5 and 6 then 'Moyen'
            when indice between 7 and 8 then 'Bon'
            when indice >= 9 then 'Excellent'
          end ;
    end FN_SATISFACTION ;
    la fonction fonctionne très bien.

    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
     
    select bob.nomfou, bob.CA, FN_SATISFACTION(fou.satisf)
     
      from
     
        ((select toto.*, sum(round((lig.qtecde * lig.priuni*1.206),2)) as CA
     
          from ligcom lig, entcom ent, fournis fou
            where ent.numcom= lig.numcom
            and ent.numfou=fou.numfou)
     
              from (select fou.nomfou, fou.satisf from fournis fou)toto;)bob)
     
     
    group by bob.nomfou ;

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 38
    Par défaut
    Bonjour,

    1) Si tu mets un CASE pense à mettre un DEFAULT
    2) il est ou le problème
    la fonction marche tres bien
    mais que demande le peuple ?
    3) est ce qu'un DECODE pourrait convenir ?

  3. #3
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Certainement, le décode peut fonctionner, mais où l'insérer dans le code pour qu'il soit correcte?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut
    La fonction seule marche très bien, mais j'ai un problème de goup by dans la requête jointe. Je vais essayer le DECODE, mais je ne maitrise pas SQL sur le bout des doigts ; idem avec CASE et DEFAULT. Je souhaiterais dans ce cas comprendre la syntaxe.

    @Merci.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 38
    Par défaut
    Pour savoir comment fonctionne la syntaxe il y a la doc ca vaut le coup de la lire

    Dans l'ordre
    1) la requete plante parce que (entre autre) parce que tu fais un SELECT sur un élément qui ne figure pas dans le GROUP BY
    2) quel est le message d'erreur de l'execution de la requete
    3) un schema de la base c'est possible ou pas ?

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut
    En fait, ca marche avec cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    select TOTO.NOMFOU, TOTO.SAT, TEMP.CA
    from
    (select fou.nomfou, sum(round((lig.qtecde * lig.priuni*1.206),2)) CA  
    from ligcom lig, entcom ent, fournis fou
    where ent.numcom= lig.numcom
    and ent.numfou=fou.numfou
    AND trunc(datcom)=trunc(datcom)
    group by fou.nomfou) TEMP 
    JOIN
    (select fou.nomfou, SUBSTR(FN_SATISFACTION(fou.satisf),1,20) SAT     
    from fournis fou) TOTO
    ON TEMP.NOMFOU = TOTO.NOMFOU;

    Mais j'aurais voulu une requete sans le JOIN mais plutot avec un select imbriqué et un DECODE comme tu le préconises, mais mes connaissances se limitent à cette requete malheureusement.

    @Merci

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous travaillez avec cashmoney ?
    Vos requêtes se ressemblent beaucoup !

Discussions similaires

  1. [XL-2010] Fonction Vlookup en VBA ne marche pas: erreur execution 9
    Par jgresse1025 dans le forum Macros et VBA Excel
    Réponses: 89
    Dernier message: 02/04/2015, 14h10
  2. retour fonction erreur execution 91
    Par samtheh dans le forum VBA Access
    Réponses: 2
    Dernier message: 31/05/2007, 11h53
  3. GTK+ erreur d'execution fonction saisie de donnees
    Par Emyleet dans le forum GTK+ avec C & C++
    Réponses: 9
    Dernier message: 02/08/2006, 15h50
  4. [C#] MDI Execution fonction sur fille a partir de la mere
    Par alex57 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/07/2004, 10h00
  5. [Ant]Erreur execution d'une tache ANT
    Par gerin dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/05/2004, 16h59

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