Portál AbcLinuxu, 26. prosince 2025 12:26
EXECUTE ''UPDATE nodes_wgs set ycoord_float = '' || y || '' WHERE gid = '' || zaznam.gid || '';'';
prikaz se jakoby provadi, ale nic se neupdatne. Kdyz si dam stejny retezec vypisovat na obrazovku, je v poradku, napr.:
UPDATE nodes_wgs set ycoord_float = 50.0675771 WHERE gid = 6002;
nesetkali jste se nekdo s timhle problemem? Asi to bude nejaka hloupost..
Dik
UPDATE, ktery si nechavam vypisovat jako info mi funguje, kdyz ho zkopiruju do psql. Ale ten EXECUTE se proste neprovede.. Ten vypis:
INFO: updating gid no. 9080
INFO: querytext1 is UPDATE nodes_wgs set xcoord_float = 14.4307393 WHERE gid = 9080;
.
.
.
atd. sorry za hnusny format ale na "html znacky" dnes nejak nemam chut
To se dá dobře udělat příkazem: UPDATE nodes_wgs SET xcoord_float=xcoord*10000000.0.mas pravdu
, ale za tim pak jeste nasledovalo vlozeni bodu POINT v postgisu, ktere bohuzel nejde takto a navic setavovani retezce query budu potrebovat dale.
Vyresil jsem to nakonec jinak:
CREATE OR REPLACE FUNCTION preved_point(integer, float, float) RETURNS void AS '
DECLARE
ide integer;
x float;
y float;
BEGIN
ide := $1;
x := $2;
y := $3;
UPDATE nodes_wgs SET nodes_geom = Geomfromtext((''POINT('' || x ||'' '' || y || '')'' ), 4326) WHERE gid = ide;
RETURN;
END
' LANGUAGE PLPGSQL;
a potom samozrejme:
select preved_point(gid, xcoord_float, ycoord_float) from nodes_wgs;
Co se tyce rychlosti, bylo to do dvou minut (96000 zaznamu, PIII+256RAM). Sestavoveni dotazu, tak jak jsem uvedl v prvnim prispevku, jsem bohuzel nerozchodil.
Zdravim
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.