Bonjour,

Est-il possible de mettre un curseur dans une fonction créée sur le serveur ?
Si oui, quel est la syntaxe ?

J'ai essayé ça, mais ça ne marche pas :
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
CREATE OR REPLACE FUNCTION StatQuartier (num IN NUMBER)  
RETURN NUMBER IS tot NUMBER;
DECLARE
tmp number;
CURSOR cur (id_demande number, coutmat NUMBER, tauxhor NUMBER, nbh NUMBER) 
      IS SELECT distinct d.id, nvl(d.coutmat,0) , nvl(tauxhor,0) , sum(t.nbheure)
          FROM demande d, realiser r , traiter t
          WHERE d.id = t.id_demande (+)
          and d.id = r.id_demande (+)
          and d.id_quartier =  num
          and d.provenance in ('AlloNarbonne','Téléphone','Mail')
          and lower(r.etat) in ('refusée','terminée') 
          GROUP BY d.id, nvl(d.coutmat,0), nvl(tauxhor,0);
BEGIN
  tot := 0;
       For cur IN ligne Loop
       tot := tot + ligne.coutmat + ligne.tauxhor * ligne.nbh; 
     End loop ; 
  RETURN (tot); 
END;
/
J'ai une erreur sur la troisième ligne (sur le declare) et je ne comprends pas pourquoi, un curseur se déclare bien dans la partie DECLARE ?