Bonjour,

je reviens un peu a la charge car je n'arrive pas a trouver une solution a mon probleme.

Est ce que qqun pourrait m'aider ?

Donc je suis toujours a la recherche d'une maniere d'executer du code SQl dynamique. J'ai bien compris qu'il etait possible de le faire par l'intermediaire de la commande EXECUTE IMMEDIATE.

Seulement je n'arrive pas a trouver la syntaxe qui fonctionne dans le cas ou je veux executer une fonction donc qui renvoit un resultat.

Qqun aurait il une idée de la syntaxe a adopter ?

Je voudrais transformer ceci par exemple :

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
 
FUNCTION F_Trouve_NumRes (p_num_res_int VARCHAR2) RETURN NUMBER
	IS
	  n_num_res				 NUMBER;
	BEGIN
 
		SELECT num_res
		INTO n_num_res
		FROM CARTON_RESA
		WHERE num_res_int = p_num_res_int;
 
		RETURN n_num_res;
 
		EXCEPTION
			WHEN NO_DATA_FOUND THEN
				RETURN NULL;
 
	END F_Trouve_NumRes;
 
PROCEDURE Test_Execut_Immediate
IS
retour NUMBER;
BEGIN
 
	 param := '990180045300';
 
	 retour := F_Trouve_NumRes (param);
 
END Execut_Immediate;
J'ai essayer plusieurs syntaxe avec execute immediate sans trouver celle qui fonctionne.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
	 EXECUTE IMMEDIATE 'retour:= F_Trouve_NumRes (''990180019700'')';
	 EXECUTE IMMEDIATE 'F_Trouve_NumRes (''' || param || ''')' INTO retour;
Quelqu'un aurait il une idée ?

D'avance merci