Bonjour à tous,

Je suis bloqué sur un petit problème de syntaxe PL/SQL et malgré mes recherches sur le web rien à faire pour le résoudre.
Il s'agit de la construction d'une requête dynamique.

Voici le code de ma fonction :
(Paramètres d'entrées de la fonction : CHAMPS vaut "TOTAL" et dans le ROWTYPE de la table t_proposals le champ P_PROPOSAL.TOTAL vaut 70)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
FUNCTION FCT_EVAL_PROPOSALS(CHAMPS     IN VARCHAR2,
                            P_PROPOSAL IN T_PROPOSALS%rowtype) RETURN NUMBER IS
  n NUMBER;
  requete varchar2(100);
BEGIN 
requete := ' select P_PROPOSAL.'||CHAMPS||' from dual ';
 
  EXECUTE IMMEDIATE requete INTO n; 
  RETURN n;
 
END FCT_EVAL_PROPOSALS;
J'ai à chaque fois l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
ORA-00904: "P_PROPOSAL"."TOTAL" : identificateur non valide
ORA-06512: à "XXX.PCK_UTIL", ligne 920
ORA-06512: à ligne 9
Je m'y arrache les cheveux. J'ai essayé avec des curseurs mais ça donne le même problème. Le problème semble venir du fait que P_PROPOSAL est une variable, si c'était une table aucun problème (cf : http://www.fil.univ-lille1.fr/~durif...ml/PL-SQL.html chapitre 8.16.2)

Quelqu'un aurait un conseil pour m'aider à faire tourner ce code?