Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : PL/pgSQL » le resultat de select dans un tableau?? » 19/03/2013 22:28:07
mon problème que j'ai pas des erreurs la requête s’exécute dans quelques secondes sans faire l'insertion dans le tableay Links !!
#2 Re : PL/pgSQL » le resultat de select dans un tableau?? » 19/03/2013 21:28:28
merci ça marche mais juste je comprends pas comment je peux verifier que le boucle la ligne lg sera fixe jusqu'a la fin de code
select name,lead (the_geom) over (order by gid) from roadbrest into lg; fixer un ligne de la table
tabfraction := (select array_agg(floatfraction order by floatfraction asc) from interobject where "the_geomRoad"=lg ) ; tableau des fraction de ce ligne en ordre croissant
while i <= array_length(tabfraction,1) --boucle sur le tableau
loop
insert into Links (geomline,source,destination)
values(ST_line_substring(lg,tabfraction[i],tabfraction[i+1]),ST_Line_Interpolate_Point(lg,tabfraction[i]),ST_Line_Interpolate_Point(lg,tabfraction[i+1]));-- insertion des valeurs de tableau dans un autre table
i:=i+2;
end loop;#3 Re : PL/pgSQL » le resultat de select dans un tableau?? » 19/03/2013 17:40:43
pour array_agg j'ai essayer de faire ce code la
set tabfraction = (select array_agg(fractionligne1 order by fractionligne1 asc) from intersectionposifloat2 where ligne1=lg ) ;
mais il y 'a un erreur de syntaxe dans l'affectation de tabfraction à la requête?
#4 Re : PL/pgSQL » le resultat de select dans un tableau?? » 19/03/2013 16:28:20
je suis désolé mais vraiment je besoin d'un exemple pour utiliser array_agg pour retourner un tableau.
Ainsi pour les boucle je trouve pas vraiment une requête peur remplacer les boucles !!
#5 PL/pgSQL » le resultat de select dans un tableau?? » 19/03/2013 15:54:31
- inesjg
- Réponses : 7
Bonjour
Je veux juste savoire comment attrivuer le resultat d'une requète select dans un tableau comme l'exmple:
create or replace function linksegment() returns setof geometry as $$
declare
lg geometry(linestring);
tabfraction double precision array; --tableau des réelles
i integer;
begin
for lg in (select the_geom from roadbrest)
loop
select into tabfraction fractionligne1 from intersectionposifloat2 where ligne1=lg or ligne2=lg order by fractionligne1 asc ; -- remplir tableau tabfraction par la requète select en ordre croissant !!!
while i <= array_length(tabfraction)
loop
insert into linksegments(point1,point2) values(tabfraction[i],tabfraction[i+1]);
end loop;
return next lg;
end loop ;
end
$$
LANGUAGE 'plpgsql';
select linksegment()Le problème est dans ce ligne ou je veux remplir tabfraction le tableau des réelles par la resultat de requète select
select into tabfraction fractionligne1 from intersectionposifloat2 where ligne1=lg or ligne2=lg order by fractionligne1 asc ;mais voici l'erreur qu'il l'affiche : ERREUR: la valeur du tableau doit commencer avec « { » ou avec l'information de la dimension. merci
#6 Re : PL/pgSQL » Les alias sur Postgresql » 19/03/2013 11:46:34
merci c'est résolu ![]()
#7 Re : PL/pgSQL » Les alias sur Postgresql » 19/03/2013 11:29:32
merci mais dans ce cas comment on peut comparer les valeurs de deux lignes de même tableau ?
#8 PL/pgSQL » Les alias sur Postgresql » 19/03/2013 10:25:13
- inesjg
- Réponses : 4
Bonjour j'ai essayer de faire une sorte de comparaison entre deux lignes dans le même tableau. Voici ma requête pour chercher les intersections des lignes .
create table interpostgis
as select the_geom as a, the_geom as b,ST_Intersection("roadbrest".a,b) from roadbrest where ST_Intersects(a,b)=true; Cette requête retourne cette erreur : la colonne roadbrest.a n'existe pas
Comme si il comprend pas les alias a et b ??
#9 Re : PL/pgSQL » fonction qui retourne un tableau des réelles » 15/03/2013 19:06:28
merci ça marcha bien maintenant
#10 PL/pgSQL » fonction qui retourne un tableau des réelles » 15/03/2013 17:01:35
- inesjg
- Réponses : 2
Bonjour
Je veux savoir s'il vous plait comment une fonstion en pgsql peut retourner un tableau et il maffiche un erreur
create or replace function segmenter() returns setof float[] as $$ -- type de retour de la fonction est float[]
declare
lg geometry(LineString);
PointForLinge geometry(Point) [] ;
tabfloat float array;
i integer;
m integer;
pt geometry(point);
begin
for lg in select the_geom from roadbrest
Loop
for pt in (select the_geom from projectionfinal where "the_geomRoad"=lg )
loop
m:=0;
PointForLinge[m]:=pt;
m:=m+1;
END loop;
if array_length(PointForLinge,1)> 0 then
for i in 0 .. array_length(PointForLinge,1)
LOOP
tabfloat[i]:=ST_Line_Locate_Point(lg,PointForLinge[i]) ;-- c'est le tableau de float que je veux le retourner
End LOOp
end if;
END LOOP;
return tabfloat; --ici le pbl
end
$$
LANGUAGE 'plpgsql';et voici l'erreur que je le trouve
RETURN ne peut pas avoir un paramètre dans une fonction renvoyant un ensemble
LINE 30: return tabfloat; merci de l'aide
#11 Re : PL/pgSQL » Select in (select) on postgresql » 14/03/2013 16:55:50
oui rien à changé avec les parenthèses, le meme message d'erreur!!
#12 Re : PL/pgSQL » Select in (select) on postgresql » 14/03/2013 16:32:09
Toujours pareil avec les parenthèses
#13 PL/pgSQL » Select in (select) on postgresql » 14/03/2013 14:13:33
- inesjg
- Réponses : 5
Bonjour
J'ai essayer d’écrire une requête dans postgresql sous la forme suivante:
'select nom,prenom from personne where age in select id from age'
il renvoie une erreur "l'opérateur de comparaison de ligne ne doit pas renvoyer un ensemble "
alors comment je peut écrire in select dans le clause where en postgresql
merci d'avance
Pages : 1