1) hacer un select
2) crear unos campos geometricos
3) actualizar los valores de estos campos geometricos
4) crear un indice geoespacial
CUANDO EJECUTO EL SP ME GENERA ERROR EN EL PUNTO 3 AL HACER UN UPDATE Y EJECUTARLO CON EXECUTE sql;
Código SQL:
Ver original
CREATE OR REPLACE FUNCTION p_poblaingas_geoindex(CHARACTER VARYING) RETURNS void AS $BODY$ DECLARE rec refcursor; SQL VARCHAR; city ALIAS FOR $1; year_mi INTEGER; year_ma INTEGER; i INTEGER; BEGIN SQL := 'SELECT MIN(periodo) AS min,MAX(periodo) AS max FROM servcon_poblaingas_'||city; OPEN rec FOR EXECUTE SQL; FETCH rec INTO year_mi,year_ma; i := year_mi; LOOP SQL := 'SELECT AddGeometryColumn ('||QUOTE_LITERAL('servcon_poblaingas_'||city||'_'||i)||','||QUOTE_LITERAL('geom')||',4326,'||QUOTE_LITERAL('POINT')||',2)'; EXECUTE SQL; SQL := 'UPDATE servcon_poblaingas_'||city||'_'||i||' set geom = GeometryFromText('||QUOTE_LITERAL('POINT('||cx||' '||cy||')')||',4326)'; EXECUTE SQL; SQL := 'CREATE INDEX idx_servcon_poblaingas_'||city||'_'||i||' ON servcon_info2009 USING GIST (geom)'; EXECUTE SQL; i := i + 1; EXIT WHEN i > year_ma; END LOOP; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE;
el error que me saca es este:
ERROR: column "cx" does not exist
CONTEXT: SQL statement "SELECT 'UPDATE servcon_poblaingas_'|| $1 ||'_'|| $2 ||' set geom = GeometryFromText('||QUOTE_LITERAL('POINT('||cx||' '||cy||')')||',4326)'"
PL/pgSQL function "p_poblaingas_geoindex" line 23 at assignment