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 :

fonction LAG et erreur PLS-00103. Oracle 8i


Sujet :

Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1
    Points : 2
    Points
    2
    Par défaut fonction LAG et erreur PLS-00103. Oracle 8i
    Bonjour
    j'ai emprunté le code suivant dans un article sur les fonctions analytiques
    Lorsque j'exécute le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select    isin, Date_cotation,Premier,PHaut,PBas,Dernier,volume,
                LAG(Dernier,1) over(partition by isin order by Date_cotation
                FROM A_COTATIONS;
    cela fonctionne très bien dans l'éditeur SQL.

    Par contre dans un package
    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
     
    CREATE OR REPLACE PACKAGE bb IS
    PROCEDURE Statistiques;
     
    END bb;
    /
    CREATE OR REPLACE PACKAGE BODY bb AS
    PROCEDURE Statistiques IS	  
    v_isin			Number;
    v_date_cotation	Date;
    v_Premier		Number;
    v_PHaut			Number;
    v_PBas			Number;
    v_dernier		Number;
    v_volume		Number;
    v_precedent		Number;
     
    Begin
    select isin, Date_cotation,Premier,PHaut,PBas,Dernier,volume,
    	   LAG(Dernier,1) over(partition by isin order by Date_cotation) precedent  	   	   	   	   
    		Into v_isin,v_date_cotation,v_Premier,v_PHaut,v_PBas,v_dernier,v_volume,
    			 v_precedent
    	   FROM A_COTATIONS; 
     
    End Statistiques;
    END bb;
    /
    j'obtiens le message d'erreur :
    PLS-00103: Symbole "(" rencontré à la place d'un des symboles suivants : , from into bulk
    La description du message d'erreur dans la doc Oracle ne me permet pas de résoudre ce probleme.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    >>>>> [A LIRE AVANT DE POSTER] Règles et info

    Citation Envoyé par orafrance
    - En tout premier lieu, pensez à indiquer la version de vos outils
    Citation Envoyé par orafrance
    Eviter tant que possible les problèmes strictement liés à des erreurs de syntaxe

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    Les fonctions anlytiques oracle sont des fonctions SQL et ne marchent pas en PL-SQL à moins d'utiliser du NDS (Native Dynamic SQL : execute immediate...)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par terence
    Les fonctions anlytiques oracle sont des fonctions SQL et ne marchent pas en PL-SQL à moins d'utiliser du NDS (Native Dynamic SQL : execute immediate...)
    pas du tout

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DECLARE
    toto NUMBER;
    BEGIN
    select 1
    into toto
    from (
     select table_name, RANK() OVER (order by table_name) a from user_tables )
     where  a  between 10 and 20
     and rownum = 1;
     dbms_output.put_line(toto);
    END;
    1

    Procédure PL/SQL terminée avec succès.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    Désolé de te contredire mais en 8i les fonctions analytiques ne marchent pas en PL (seulement à partir de la 9i) , voila ce que j'ai quand j'exécute ton bloc sur ma 8.1.7:

    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
     
    SQL> DECLARE
      2  toto NUMBER;
      3  BEGIN
      4  select 1
      5  into toto
      6  from (
      7   select table_name, RANK() OVER (order by table_name) a from user_tables )
      8   where  a  between 10 and 20
      9   and rownum = 1;
     10   dbms_output.put_line(toto);
     11  END;
     12  /
     select table_name, RANK() OVER (order by table_name) a from user_tables )
                                    *
    ERROR at line 7:
    ORA-06550: line 7, column 33:
    PLS-00103: Encountered the symbol "(" when expecting one of the following:
    , from

    voila un petit lien de asktom pour achever de te convaincre:
    http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:3027089372477

  6. #6
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    D'où l'intérêt d'indiquer systématiquement la version d'Oracle utilisée


    Laly.

  7. #7
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Bien sûr, mais en l'occurence, la version est indiquée, dans le titre du message ! ;-)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par terence
    Désolé de te contredire mais en 8i les fonctions analytiques ne marchent pas en PL (seulement à partir de la 9i)
    au temps pour moi, tu as parfaitement raison

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

Discussions similaires

  1. erreur [PLS-00103: Symbole "=" rencontré ]
    Par zaineb.z dans le forum Débuter
    Réponses: 27
    Dernier message: 21/02/2008, 14h25
  2. [PL/SQL] Erreur PLS-00103 dans un trigger
    Par sami.g dans le forum Oracle
    Réponses: 1
    Dernier message: 18/12/2006, 17h57
  3. Réponses: 4
    Dernier message: 23/05/2006, 17h04
  4. erreur PLS-00103 sur une fonction
    Par atruong dans le forum Oracle
    Réponses: 2
    Dernier message: 28/04/2006, 13h49
  5. Erreur PLS 00103
    Par claralavraie dans le forum Oracle
    Réponses: 4
    Dernier message: 05/01/2006, 17h44

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