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 :

Requête qui ne renvoie aucun résultat


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut Requête qui ne renvoie aucun résultat
    Bonjours j'essaye de calculer le chiffre d'affaires dans une base de données, mais je bloque quand j'appelle ma fonction elle ne renvoie rien du tout..
    Je pense à un problème de portée de variable, mais je ne suis pas sur..


    declare
    pnum varchar2(10);
    chiffre number(10);
    begin
    pnum:= 'V8000';
    chiffre := chiffreV(pnum);
    dbms_output.put_line(chiffre);
    end;
    [2019-03-04 18:14:17] completed in 6 ms

    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
    create or replace function chiffreV(nV varchar2) return number is
      chiffre number(10);
      placeR number;
      PRIX number;
      cursor c1 is select distinct(CLASSE.nomclasse) from CLASSE where classe.numvol=nV;
    begin
      chiffre:= 0;
      for c1_ligne in c1 loop
        select coutvol*CoeffPrix into PRIX
        from VOL inner join CLASSE C2 on VOL.NumVol = C2.NumVol
        where VOL.NumVol=nV and c2.nomclasse=c1_ligne.nomclasse;
     
        select sum(NbPlaces) into placeR
        from RESERVATION
        where numvol=nV and nomclasse=c1_ligne.nomclasse;
        chiffre := chiffre+prix*placeR;
      end loop;
      return chiffre;
     
    end;
    le code que j'ai écrit pour appeler ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    declare
      pnum varchar2(10);
      chiffre number(10);
      tes number(3);
    begin
      pnum:= 'V8000';
      chiffre := chiffreV(pnum);
      dbms_output.put_line(chiffre);
    end;

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Tu as fais un SET SERVEROUTPUT ON avant d'appeler ta fonction?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut
    je suis sur data grip et j'ai activé l'option en plus si je fais ca


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    declare
      pnum varchar2(10);
      chiffre number(10);
      tes number(3);
    begin
      pnum:= 'V8000';
      chiffre := 3;
      dbms_output.put_line(chiffre);
    end;
    ca me envoie 3, du coup je ne comprend plus rien..

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut
    J'ai résolu mon problème, je poste quand même ici si quelqu'un a le même problème que moi.
    Le problème était que la fonction sum pouvait renvoyer Null
    J'ai donc fait un if avec un compteur pour lever cette exception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select count(*) into nb from classe where NumVol=nV;
      if nb=0 then
        raise volNo;
      end if;
    Merci.

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Bonjour,


    Attention aux valeurs NULL dans les opérations arithmétiques
    Si un champs est à NULL alors le résultat sera NULL.

    Tu peux, au choix, inclure dans la ta clause de sélection de ne pas prendre les valeurs NULL ou ajouter un NVL pour forcer une valeur si le champs est à NULL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NVL(NULL,0) FROM dual;

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut
    Merci pour ta réponse, j'y penserai maintenant !

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

Discussions similaires

  1. [MySQL] Requête élémentaire qui ne renvoie aucun résultat
    Par onsmokepas dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/05/2017, 20h16
  2. Requête qui ne retourne aucun résultat en timeout avec un top
    Par olysmar2 dans le forum Développement
    Réponses: 10
    Dernier message: 27/11/2014, 19h35
  3. Réponses: 8
    Dernier message: 04/06/2010, 15h50
  4. Code de calcul qui ne renvoie aucun résultat
    Par joniyyy dans le forum Langage
    Réponses: 9
    Dernier message: 04/10/2008, 19h33

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