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 :

pb de requete qui ne marche pas sur pl sql


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Points : 11
    Points
    11
    Par défaut pb de requete qui ne marche pas sur pl sql
    Bonjour,
    voilà mon pb, j'ai une requête qui marche parfaitement sur l editeur sql mais quand je l integre dans ma fonction, elle ne marche pas et ça me sort un message disant que la commande sql ne se termine pas correctement.
    voilà ma 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    BEGIN
     
      select  sum(T.quant*op.cours) into conserv
          from tp.histo_operation op,
                          (select titre, sum(quantite * signe)as quant
                            from tp.histo_livraison, tp.titre tit, tp.tiers tier 
                            where titre=tit.code and
                            tier.code=portefeuille and
                            (tit.type_cotation='C') and
                            (tier.type_residence='R') and
                            (tier.zone_text7='CP') and
                            (tier.flag_pp='N') and
                            flag_stade<>'A' and
                            date_valeur>=to_date('01/09/2007','DD/MM/YYYY') and
                            date_valeur<to_date('01/10/2007','DD/MM/YYYY')  --and 
                            group by titre) T
           where T.titre=op.titre and
                 op.date_valeur=(select max(o.date_valeur)
                                 from tp.histo_operation o
                                 where o.date_valeur>=to_date('01/09/2007','DD/MM/YYYY') and
                                 o.date_valeur<to_date('01/10/2007','DD/MM/YYYY'))
     
     return (conserv);           
     
    end;
    en fait, ma requete doit me renvoyer la valeur de la quantité restante de chaque titre.
    dans la sous requete, je calcule la quantité restante de chaque titre et après dans la requete principale je calcule la valeur en multipliant la quantité restante de chaque titre à son cours correspondant.

    pour mon environnement, je bosse sur oracle et sql navigator.
    je rappelle que ca marche parfaitement sur l editeur sql.

    merci d avance pour votre aide

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    Tu devrais utiliser les balises [code] (le #) pour que ce soit plus clair
    Quel est l'entete de ta fonction ?

    [Edit] Essai de mettre un ; à la fin de ton select
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    dsl, ok, voilà ma fonction
    ////////////////////////////////////////////////

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    FUNCTION    conservation(date_deb date, date_fin date, pp in varchar2, nat in varchar2, resid in varchar2, cotat in varchar2) return number is
     
    conserv number;
     
    BEGIN
    --------la quantité restante fois le prix de chaque titre---------------
     
        select  sum(T.quant*op.cours) into conserv
          from tp.histo_operation op,
     
    ----------------calculer la quantité restante de chaque titre-----------
     
                          (select titre, sum(quantite * signe)as quant
                            from tp.histo_livraison, tp.titre tit, tp.tiers tier 
     
                            where titre=tit.code and
                            tier.code=portefeuille and
                            (tit.type_cotation=cotat) and
                            (tier.type_residence=resid) and
                            (tier.zone_text7=nat) and
                            (tier.flag_pp=pp) and
                            flag_stade<>'A' and
                            date_valeur>=date_deb and
                            date_valeur<date_fin  
                            group by titre) T
     
           where T.titre=op.titre and
                 op.date_valeur=(select max(od.date_valeur)
                                 from tp.histo_operation od
                                 where od.date_valeur>=date_deb and
                                 od.date_valeur<date_fin)
     return (conserv);           
     
    END;

  4. #4
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Est ce que tu arrives à faire ton select dans oracle en mettant les paramétres en dur ou est ce que oracle te renvoi déjà une erreur ?

    [edit] Si ça marche essai de mettre un ; avant le return
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    FUNCTION conservation(date_deb date, date_fin date, pp in varchar2, nat in varchar2, resid in varchar2, cotat in varchar2) return number is
    
    conserv number;
    
    BEGIN
    --------la quantité restante fois le prix de chaque titre---------------
    
    select sum(T.quant*op.cours) into conserv
    from tp.histo_operation op,
    
    ----------------calculer la quantité restante de chaque titre-----------
    
    (select titre, sum(quantite * signe)as quant
    from tp.histo_livraison, tp.titre tit, tp.tiers tier 
    
    where titre=tit.code and
    tier.code=portefeuille and
    (tit.type_cotation=cotat) and
    (tier.type_residence=resid) and
    (tier.zone_text7=nat) and
    (tier.flag_pp=pp) and
    flag_stade<>'A' and
    date_valeur>=date_deb and
    date_valeur<date_fin 
    group by titre) T
    
    where T.titre=op.titre and
    op.date_valeur=(select max(od.date_valeur)
    from tp.histo_operation od
    where od.date_valeur>=date_deb and
    od.date_valeur<date_fin);
    return (conserv); 
    
    END;
    [/edit]
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    meeeeeeeeeeeeeeeeerci infiniment, oui ça marche, j avais pas mis le ;
    merci encore

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    merci d'utiliser les balises CODE la prochaine fois

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    ok, je savais pas

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 27/08/2006, 19h47
  2. Requete qui ne fonctionne pas sur toutes les versions de MySQL
    Par goldorax113 dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/06/2006, 11h04
  3. DATEDIFF() qui ne marche pas sur une version 5.0.xx
    Par vallica dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/05/2006, 17h44
  4. Réponses: 3
    Dernier message: 08/09/2003, 15h06
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

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