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

PL/SQL Oracle Discussion :

probleme requete SQL dans un block PL/SQL


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 102
    Points : 36
    Points
    36
    Par défaut probleme requete SQL dans un block PL/SQL
    Bonjour,
    j'ai une requete qui marche bien sur pl/sql developper, mais quand je la mis dans un curseur il ya erreur de compilation.
    vous trouvrez ci-joint le code de la requete et les deux ecrans d'erreuret dans un cureseur et execution de la requete toute seule.
    je me demande pourquoi cette erreur avec un curseur.

    je travaille avec oracle developper 6i

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    select
    x.soci,
    x.risk,
    x.origin,
    x.destin,
    x.pack,
    x.dev,
    x.flg_p_s,
    x.term,
    x.annee_ref,
    x.mois_ref,
    sum(tot_qte_short) as tot_qte_short,
    nvl(avg(avg_prix_flat),0) as avg_prix_flat
    from
        (
        Select
        s.soci,
        s.risk,
        s.origin,
        s.destin,
        s.pack,
        s.dev,
        s.flg_p_s,
        s.term,
        to_char(s.date_ship_deb, 'YYYY') "ANNEE_REF",
        to_char(s.date_ship_deb, 'MM') "MOIS_REF",
        s.qte_EXEC_solde as "TOT_QTE_SHORT",
        (select e.MT_COST_RISK/e.qte_appliquee from estcost e where s.contrat = e.CONTRAT(+) and 
        s.sect = e.sect(+) and e.mt_cost <> 0 and E.COST in ('FRET', 'BFRET')) as "AVG_PRIX_FLAT"
        From
        Sect S,
        Term T
        where s.Term = T.term
        and s.soci = '52'
        and s.qte_exec_solde <> 0
        and s.risk = 'R010'
        and T.BASIS = 'C'
        and S.flg_p_s = 'S'
        ) x
    group by
    x.soci,
    x.risk,
    x.origin,
    x.destin,
    x.pack,
    x.dev,
    x.flg_p_s,
    x.term,
    x.annee_ref,
    x.mois_ref;

    et merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par zinabd Voir le message
    Bonjour,
    j'ai une requete qui marche bien sur pl/sql developper, mais quand je la mis dans un curseur il ya erreur de compilation.
    vous trouvrez ci-joint le code de la requete et les deux ecrans d'erreuret dans un cureseur et execution de la requete toute seule.
    je me demande pourquoi cette erreur avec un curseur.

    je travaille avec oracle developper 6i

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    select
    x.soci,
    x.risk,
    x.origin,
    x.destin,
    x.pack,
    x.dev,
    x.flg_p_s,
    x.term,
    x.annee_ref,
    x.mois_ref,
    sum(tot_qte_short) as tot_qte_short,
    nvl(avg(avg_prix_flat),0) as avg_prix_flat
    from
        (
        Select
        s.soci,
        s.risk,
        s.origin,
        s.destin,
        s.pack,
        s.dev,
        s.flg_p_s,
        s.term,
        to_char(s.date_ship_deb, 'YYYY') "ANNEE_REF",
        to_char(s.date_ship_deb, 'MM') "MOIS_REF",
        s.qte_EXEC_solde as "TOT_QTE_SHORT",
        (select e.MT_COST_RISK/e.qte_appliquee from estcost e where s.contrat = e.CONTRAT(+) and 
        s.sect = e.sect(+) and e.mt_cost <> 0 and E.COST in ('FRET', 'BFRET')) as "AVG_PRIX_FLAT"
        From
        Sect S,
        Term T
        where s.Term = T.term
        and s.soci = '52'
        and s.qte_exec_solde <> 0
        and s.risk = 'R010'
        and T.BASIS = 'C'
        and S.flg_p_s = 'S'
        ) x
    group by
    x.soci,
    x.risk,
    x.origin,
    x.destin,
    x.pack,
    x.dev,
    x.flg_p_s,
    x.term,
    x.annee_ref,
    x.mois_ref;

    et merci
    en fait quand j'imbrique cette meme requette dans un cursseur mais toujours dans pl/sql developper ca marche , mais dés que je la met dans une procedure dans oracle developper l,erreur est levée.
    apparement c'est au niveau de la version de mon oracle form/developper que peut etre je doit ajouter qlq chose au declaration.
    et merci

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Peux-tu mettre ton code de déclaration de curseur stp.

    Merci

    Pierre

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Et si vous mettez en commentaire cette partie, ça passe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
      (SELECT e.MT_COST_RISK/e.qte_appliquee FROM estcost e WHERE s.contrat = e.CONTRAT(+) AND 
        s.sect = e.sect(+) AND e.mt_cost <> 0 AND E.COST IN ('FRET', 'BFRET')) AS "AVG_PRIX_FLAT"
    ...

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Essayez en mettant les alias en minuscule et sans guillemets.

    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
    SELECT   x.soci, x.risk, x.origin, x.destin, x.pack, x.dev, x.flg_p_s, x.term,
             x.annee_ref, x.mois_ref, SUM (tot_qte_short) AS tot_qte_short,
             NVL (AVG (avg_prix_flat), 0) AS avg_prix_flat
        FROM (SELECT s.soci, s.risk, s.origin, s.destin, s.pack, s.dev, s.flg_p_s, s.term,
                     TO_CHAR (s.date_ship_deb, 'YYYY') AS annee_ref,
                     TO_CHAR (s.date_ship_deb, 'MM') AS mois_ref,
                     s.qte_exec_solde AS tot_qte_short,
                     (SELECT e.mt_cost_risk / e.qte_appliquee
                        FROM estcost e
                       WHERE s.contrat = e.contrat(+)
                         AND s.sect = e.sect(+)
                         AND e.mt_cost <> 0
                         AND e.COST IN ('FRET', 'BFRET')) AS avg_prix_flat
                FROM sect s, term t
               WHERE s.term = t.term
                 AND s.soci = '52'
                 AND s.qte_exec_solde <> 0
                 AND s.risk = 'R010'
                 AND t.basis = 'C'
                 AND s.flg_p_s = 'S') x
    GROUP BY ...

Discussions similaires

  1. probleme requete SQL dans un block PL/SQL
    Par zinabd dans le forum PL/SQL
    Réponses: 15
    Dernier message: 14/01/2009, 16h22
  2. Réponses: 15
    Dernier message: 11/05/2007, 15h28
  3. probleme requete DELETE dans Postgres
    Par youp_db dans le forum JDBC
    Réponses: 2
    Dernier message: 13/11/2006, 17h35
  4. probleme de casse dans l'entreprise manager sql Srv 2k
    Par poosh dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/04/2006, 08h23
  5. [SQL] Traitement de plusieurs requêtes .SQL dans un script PHP?
    Par M4x dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/03/2006, 19h59

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