Bonjour, je viens demander de l'aide parce que je commence à péter un cable, j'essaye de compiler une fonction PL/SQL et impossible de trouver pourquoi ça ne compile pas.. je crois avoir tout essayé..

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
CREATE OR REPLACE
FUNCTION APPETIT_DEPEND_DE_ECAILLES RETURN VARCHAR2 IS
 
DECLARE
  CURSOR App_ecailles IS
    SELECT d1.dragon, d1.nombreecailles, a1.totalcal AS appetit, ROUND (a1.totalcal/d1.nombreecailles,2) AS rapport
    FROM DRAGONS d1, APPETIT a1 
    WHERE d1.dragon = a1.dragon;
    App_prec App_ecailles%rowtype;
    App_cour App_ecailles%rowtype;
 
BEGIN
  OPEN App_ecailles;
    FETCH App_ecailles INTO App_prec;
    LOOP
      FETCH App_ecailles INTO App_cour;
      EXIT WHEN App_ecailles%notfound;
      IF App_cour.appetit < App_prec.appetit
        THEN RETURN('NON');
        App_prec := App_cour;
      END IF; 
    END LOOP;
  CLOSE App_ecailles; 
END APPETIT_DEPEND_DE_ECAILLES;
Mon Log de compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Error(4,1): PLS-00103: Symbole "DECLARE" rencontré à la place d'un des symboles suivants :     begin function package pragma procedure subtype type use    <identificateur> <identificateur entre guillemets> form    current cursor external language Symbole "begin" a été substitué à "DECLARE" pour continuer. 
Error(24,31): PLS-00103: Symbole "end-of-file" rencontré à la place d'un des symboles suivants :     begin case declare end exception exit for goto if loop mod    null pragma raise return select update while with    <identificateur> <identificateur entre guillemets>    <variable bind> << close current delete fetch lock insert    open rollback savepoint set sql execute commit forall merge    pipe
Je bosse sous SQL Developper 1.2.1 avec une base Oracle 10g Express Edition.

Si vous avez la moindre idée de résolution, je vous remercie d'avance pour votre aide !