Bonsoir à tous, alors voilà je vous explique mon souci.
Je voudrais créer une fonction récursive en PL/SQL qui me permettrais de récupérer l'identifiant parent, pour un enregistrement donné, l'enregistrement parent, et fils se trouvant dans la même table.
j'ai une table LISTEVALEUR qui se compose ainsi :
ID_LISTEVAL (id auto increment)
VAL (varchar, libellé de la valeur de liste)
ID_VAL_PARENT (identifiant de la valeur de liste parente ex: 52,64 qui fait référence au ID_LISTEVAL parent)
alors en fait ce que je voudrais faire, c'est créer une fonction qui boucle jusqu'a tomber sur la valeur parente de plus haut niveau.
on sait qu'une valeur est parente, quand sont ID_VAL_PARENT vaut '0'
l'algo de la fonction ressemblerait grosso à ça :
je récupére l'enregistrement de niveau n+1 à mon enregistrement 12
SELECT ID_VAL_PAR FROM LISTEVALEUR WHERE ID_LISTVAL='12'
BOUCLE
je refais un SELECT sur l'enregistrement n+1 pour trouver son propre ID_VAL_PAR
FIN BOUCLE quand l'enregistrement sur lequel je me trouve a un ID_VAL_PAR valant 0
les listes de valeurs on cette tête là :
---LISTE PARENTE de 1er niveau---
1;MOYEN DE TRANSPORT;0
x;HABITATION;0
y;PAYS;0
---SOUS LISTE de 2éme niveau---
2;TERRESTRE;1
3;AERIEN;1
4;AQUATIQUE;1
---SOUS LISTE de 3éme niveau---
5;VOITURE;2
6;TRAIN;2
7;VELO;2
---SOUS LISTE de 4éme niveau---
8;DIESEL;5
9;ESSENCE;5
10;GPL;5
---SOUS LISTE de 5éme niveau---
11;SP95;9
12;SP98;9
en fait, à partir de l'enregistrement 12 (SP98), j'aimerais retrouver l'enregistrement parent 1 (MOYEN DE TRANSPORT), ne sachant pas trop comment faire en PL SQL, je vous demande un peu d'aide, pour savoir quelle est la meilleure façon de le faire, fonction ? curseurs ?
merci pour votre aide
Partager