Bonjour à tous !

Voici le contexte : je travaille sur une base Oracle 9i, et je dois récupérer des valeurs dans certaines tables avec une requête dynamique, dont les paramètres sont eux-même stockés dans une table de paramétrage.

Mon problème est de récupérer ces valeurs dans un curseur pour pouvoir les insérer une à une dans une autre table, alors que je ne connais pas le nom des champs, puisque ceux-ci sont paramétrés dynamiquement.

On m'a conseillé de mettre des alias dans ma requête pour chacune des 2 colonnes ramenées, afin de pouvoir les manipuler dans tous les cas. Malheureusement, ça ne passe pas à la compil (PLS-00302: Le composant 'ORDRE' doit être déclaré)

Voici le bout de ma procédure qui pose problème :

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
33
34
 
--déclarations
...
TYPE CurTyp IS REF CURSOR;
C_Result   CurTyp;
rec_Result  RESULTAT_PROPA%ROWTYPE; --possibilité d'écrire un ROWTYPE manuellement (personnalisé) ?
...
 
--génération de la requête
L_Requete := 'select '||L_Nom_liste||' ordre, '||rec_Info.code||' val from '
||L_Nom_table|| ' where DOSID = '||P_DOSID||
' and DPRVERSION = '''||P_VERSION||''' order by'||L_Nom_liste;
 
-- exécution de la requête 
OPEN C_Result FOR L_Requete;
	LOOP
      	FETCH C_Result INTO rec_Result;
      	EXIT WHEN C_Result%NOTFOUND;
		  if rec_Info.type = 'DATE' then
		INSERT INTO RESULTAT_PROPA (REQID, DOSID, DPRVERSION, 
			CODE_CLIENT, BLOC, VALEUR, VALEUR_LISTE) 
			VALUES (P_REQID, P_DOSID, P_VERSION,
			rec_Info.codeclient, rec_Bloc.bloc, 
			to_char(rec_Result.val, 'DD/MM/YYYY'), rec_Result.ordre); 
   	  	  else
			INSERT INTO RESULTAT_PROPA (REQID, DOSID, 
			DPRVERSION, CODE_CLIENT, BLOC, VALEUR, 
			VALEUR_LISTE) 
			 VALUES (P_REQID, P_DOSID, P_VERSION, 
			 rec_Info.codeclient, rec_Bloc.bloc, to_char(rec_Result.val),
			 rec_Result.ordre);
		  end if;
	END LOOP;
CLOSE C_Result;
Si vous avez la solution, merci mille fois

(question subsidiaire, pour déclarer mon rec_Result (qui parcoure le curseur), puis-je personnaliser le type d'enregistrement que j'attends (au lieu de mettre un %rowtype, et si oui comment ?)