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

Oracle Discussion :

[PL/SQL]requête imbriquée


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 150
    Points : 121
    Points
    121
    Par défaut [PL/SQL]requête imbriquée
    Bonjour,

    J'essaie de faire du pl/sql et je suis un peu débutante, mais j'avais trouvé pas mal de chose intéressante sur les faqs (en passant merci)

    Mais je me retrouve à avoir une erreur lorsque je fais la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DISTINCT C.COM_FISCAL_YR,
                            (SELECT SUM(D.COM_ITEM_AMOUNT) 
                              FROM COMMIT_ITM_DST D, COMMIT_ITEMS I 
                              WHERE I.ELEMENT_5 = 'cur.REQ_NUM' 
                              AND D.COM_XREF_NUM = I.COM_XREF_NUM 
                              AND D.COM_XREF_ITEM_NUM = I.COM_XREF_ITEM_NUM 
                              AND D.COM_FISCAL_YR = C.COM_FISCAL_YR 
                              AND D.LOCATION = 1) AS COM_AMT
    FROM COMMIT_ITM_DST C 
    		WHERE COM_FISCAL_YR >= '2002' 
    		ORDER BY COM_FISCAL_YR;
    Je sais que cette requête fonctionne très bien en sql car je l'ai fait rouler dans TOAD (si vous connaissez)

    voici l'erreur engendré par cette requête

    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
                            (SELECT SUM(D.COM_ITEM_AMOUNT)
                             *
    ERROR at line 26:
    ORA-06550: line 26, column 26:
    PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
    &#40; - + mod not null others <an identifier>
    <a double-quoted delimited-identifier> <a bind variable> avg
    count current exists max min prior sql stddev sum variance
    execute forall time timestamp interval date
    <a string literal with character set specification>
    <a number> <a single-quoted SQL string>
    ORA-06550&#58; line 32, column 47&#58;
    PLS-00103&#58; Encountered the symbol "AS" when expecting one of the following&#58;
    ; return returning and or
    ORA-06550&#58; line 36, column 64&#58;
    PLS-00103&#58; Encountered the symbol "AS" when expecting one of the following&#58;
    , ; for <an identifier>
    <a double-quoted delimited-identifier> group having intersect
    minus order start union where connect
    ORA-06550&#58; line 45, column 47&#58;
    PLS-00103&#58; Encountered the symbol "AS" when expecting one of the following&#58;
    , ; for <an identifier>
    <a double-quoted delimited-identifier> group having intersect
    minus order st
    Je sais que c'est une grosse erreur à lire, mais je n'y comprends rien

    est-ce que quelqu'un aurait une idée???

    Je vous remercie à l'avance
    Nadine

  2. #2
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    salut, pourrais-tu nous mettre ton code PL/SQL complet STP... ou en tout cas un bout avant, l'erreur doit se situer un peu en amont...
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    La sous-requête scalaire est une spécificité 9i.

    avec quel utilitaire et sur quelle version de base exécutez-vous cette requête ?
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 150
    Points : 121
    Points
    121
    Par défaut
    ok, tout d'abord mon code :

    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
    51
    52
    53
    DECLARE
       nb_projet   NUMBER&#40;5&#41;;
       curr_row    NUMBER&#40;5&#41;;
       fiscal_year NUMBER&#40;4&#41;;
       inv_amt     NUMBER&#40;10&#41;;
       adj_amt     NUMBER&#40;10&#41;;
       debit       NUMBER&#40;10&#41;;
       rec_amt1    NUMBER&#40;10&#41;;
       rec_amt2    NUMBER&#40;10&#41;;
       wo_amt      NUMBER&#40;10&#41;;
     
       cursor no_projet is
       select REQ_NUM
       FROM   DEC_REQUEST
       WHERE  REQUEST_STATUS = '608'
       and    REQ_NUM = '161000351';
     
    BEGIN
     
       FOR cur IN no_projet loop
     
       	DECLARE
       	   CURSOR donnees IS
     
       		SELECT DISTINCT C.COM_FISCAL_YR,
                            &#40;SELECT SUM&#40;D.COM_ITEM_AMOUNT&#41; 
                              FROM COMMIT_ITM_DST D, COMMIT_ITEMS I 
                              WHERE I.ELEMENT_5 = cur.REQ_NUM
                              AND D.COM_XREF_NUM = I.COM_XREF_NUM 
                              AND D.COM_XREF_ITEM_NUM = I.COM_XREF_ITEM_NUM 
                              AND D.COM_FISCAL_YR = C.COM_FISCAL_YR 
                              AND D.LOCATION = 1&#41; AS COM_AMT,
    FROM COMMIT_ITM_DST C 
    		WHERE COM_FISCAL_YR >= '2002' 
    		ORDER BY COM_FISCAL_YR;
     
    	BEGIN
     
    		FOR curr_don IN donnees loop
     
    			INSERT INTO NADINE_HUGO_FIN &#40;REQ_NUM,FISCAL_YEAR,INV_AMT, ADJ_AMT, DEBIT, REC_AMT1,
    			REC_AMT2, WO_AMT&#41; VALUES &#40;curr.REQ_NUM, curr_don.FISCAL_YEAR, curr_don.INV_AMT,curr_don.ADJ_AMT,
    			curr_don.DEBIT, curr_don.REC_AMT1, curr_don.REC_AMT2, curr_don.WO_AMT&#41;;
     
    		END LOOP;
    	END;      
     
       END LOOP;
     
    COMMIT;
     
    END;
    /
    J'espère que c'est pas trop long ou désagréable à lire....

    Ensuite, la version de la bd est 8.1.7.4.1 et j'utilise oracle SQL*PLUS et mon client est le 901...je sais pas si ça vous dit quelque chose...

    merci à l'avance
    Nadine

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
     SELECT DISTINCT C.COM_FISCAL_YR, 
                            &#40;SELECT SUM&#40;D.COM_ITEM_AMOUNT&#41; 
    ...
    la sous-requête scalaire n'est permise que depuis Oracle 9i.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 150
    Points : 121
    Points
    121
    Par défaut
    ah!!! Excuse-moi, je ne comprenais pas ce que tu voulais dire par sous-requête scalaire!!!

    Merci, je vais me créer des vues pour cette requête.

    Bonne journée
    Nadine

  7. #7
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Créez une vue en ligne dans la clause FROM de votre requête.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

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

Discussions similaires

  1. SQL Requête imbriquée
    Par vr_brandon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/07/2013, 14h57
  2. Réponses: 3
    Dernier message: 04/07/2008, 18h03
  3. [SQL] Requêtes imbriquées
    Par Asdorve dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/07/2007, 12h42
  4. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 11h37
  5. [D2005 - Access-Sql] Comment imbriquer 4 tbles en 1 requête?
    Par Hauwke dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/11/2005, 10h44

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