[resolu]fonction Postgresql

Voila j’utilise une fonctione Postgresql pour écrire dans une table et quand je la lance le serveur ne réponds plus.

Le but étant à partir des données d’une table écrire dans une autre table, le but final étant d’obtenir une liste permutée pour un thesaurus

[code]create function gen_liste_permut() return void as’

declare
colval record;
tmpg text;
tmpd text;
tmp text;
pos integer;
begin for colval in select descripteur,id_terme from terme limit 10 loop
tmp:=colval.descripteur;
while tmp != ‘’ loop
pos:=position(’ ’ in tmp);
if pos>0 then
tmpg:=substring(tmp,1,position(’ ’ in tmp));
tmpd:=substring(tmp,position(’ ’ in tmp)+1,length(tmp));
insert into liste_permut (id_terme,cold,colg) values (colval.id_terme,tmpd,tmpg);
else
insert into liste_permut (id_terme,cold,colg) values (colval.id_terme,tmp,’’);
tmp:=’’;
end if;
end loop;
end loop;
return 1;
end;
’ LANGUAGE plpgsql;[/code]

pour l’éxcuter je fais :

j’ai tester avec d’autres fonction plus légères écrivant dans la table ca marche très bien, alors pensez vous que le plantage vienne de la lourdeur de celle-ci

merci de votre aide

finalement j’y suis arrivé donc pour info je vous met la fonction correcte qui génère une liste permutée à partir d’une table, ca pourra toujours servir à ceux qui developpent des outils autour d’un thesaurus:

declare colval record; tmpg text; tmpd text; tmp text; pos integer; begin for colval in select descripteur,id_terme from terme loop tmp:=colval.descripteur; while tmp != '' loop pos:=position(' ' in tmp); if pos>0 then tmpd:=substring(tmp,position(' ' in tmp)+1,length(tmp)); tmpg:=substring(colval.descripteur,1,length(colval.descripteur)-length(tmpd)); insert into liste_permut (id_terme,cold,colg) values (colval.id_terme,tmpd,tmpg); tmp:=tmpd; else insert into liste_permut (id_terme,cold,colg) values (colval.id_terme,tmp,''); tmp:=''; end if; end loop; end loop; return 1; end;

le problème venait de ma boucle dont je ne sortais pas, erreur classique j’ai honte