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 :
Si vous avez la solution, merci mille fois
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;
(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 ?)
Partager