Partage
  • Partager sur Facebook
  • Partager sur Twitter

package et procedure

    15 septembre 2022 à 23:30:50

    Bonsoir à tous

    J'ai actuellement une erreur dans le body d'un package que j'essaie de créer cependant je ne vois pas où est mon erreur.

    J'ai beau chercher sur les forums je ne vois pas mon erreur : au niveau des if, etc. 

    Voici ma procedure de base : 

    CREATE or REPLACE procedure pr_resultat
    IS
       CURSOR  c_notes    is
        select avg(points) moy, num_eleve
        from resultats
        group by num_eleve;
    
        result varchar(20) := '';
    BEGIN
       for elem in c_notes LOOP
           if elem.moy < 10 then 
            result := 'failure';
           elsif elem.moy >= 10 and elem.moy < 12 then 
            result := 'average';
           elsif elem.moy >= 12 and elem.moy < 14 then 
            result := 'pretty good';
           elsif elem.moy >= 14 and elem.moy < 16 then 
            result := 'good';
           elsif elem.moy >= 16 then 
            result := 'very good';
           end if;
               DBMS_OUTPUT.PUT_LINE(elem.num_eleve || '->' || result);
       end loop;
    END;

    et la déclaration de mon package :

    create or replace package package_prcd 
     is
        procedure pr_resultat;
     end package_prcd;
     /
     
     -- body
     create or replace package body package_prcd
     is
        procedure pr_resultat
        IS
        begin
            CURSOR  c_notes is   
            select avg(points) moy, num_eleve
            from resultats
            group by num_eleve;
        
            result varchar(20) := '';
            
           for elem in c_notes LOOP
               if elem.moy < 10 then 
                result := 'failure';
               elsif elem.moy >= 10 and elem.moy < 12 then 
                result := 'average';
               elsif elem.moy >= 12 and elem.moy < 14 then 
                result := 'pretty good';
               elsif elem.moy >= 14 and elem.moy < 16 then 
                result := 'good';
               elsif elem.moy >= 16 then 
                result := 'very good';
               end if;
            DBMS_OUTPUT.PUT_LINE(elem.num_eleve || '->' || result);
           end loop;
        end;
    end package_prcd;
    /

    En executant ceci, j'ai cette erreur que je n'arrive pas à résoudre, sauriez vous comment faire ? 

    Error(183,17): PLS-00103: Encountered the symbol "C_NOTES" when expecting one of the following:     := . ( @ % ; 

    KD



    • Partager sur Facebook
    • Partager sur Twitter
      16 septembre 2022 à 8:06:09

      Bonjour,

      L'erreur indique ligne 17, mais c_notes est à la ligne 13 dans ton exemple ...

      Tu confirmes que c'est la déclaration du curseur qui plante ? Ou le FOR ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

      package et procedure

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown