Bonjour,

J'ai créée une fonction qui doit me renvoyer un taux...
Pour plus de facilite la voici :

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
create or replace
FUNCTION CalcTxPLoc (mag IN VARCHAR2, per IN VARCHAR2)
   RETURN NUMBER IS taux_porteurs_loc NUMBER;
   nb_p NUMBER;
   nb_ploc NUMBER;
   req VARCHAR2(1000);
   req2 VARCHAR2(1000);
 BEGIN
 
	req := 'SELECT sum(a.pa_nb) '||
	'FROM grfid_h_200607 a , arcsde.gr_taxcodes_2001 b '||
	'WHERE a.codmag = '''||mag||''' '||
	'AND   a.periode = '''||per||''' '||
  'AND   a.codgeo = b.ID '||
	'AND   a.codgeo NOT IN (''NP'',''PNL'',''GNE'',''XXXX'') '||
	'AND   a.pa_nb > 0 '
	;
 
EXECUTE IMMEDIATE req INTO nb_ploc;
 
req2 :=	'SELECT sum(pa_nb) '||
	'FROM grfid_h_200607 '||
	'WHERE codmag =  '''||mag||''' '||
	'AND   periode = '''||per||''''
  ;
 
EXECUTE IMMEDIATE req2 INTO nb_p;
	taux_porteurs_loc := nb_ploc/nb_p;
 
	RETURN(taux_porteurs_loc);
 
 END;
Cependant elle ne fonctionne pas ( étonnant xD ).
Ca me renvoie une erreur de table qui n'existe pas au niveau de req. Or cette table existe bel et bien.
Si j'execute la requete a part elle fonctionne bien d'ou mon incomprehension.

Merci de m'aider