Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Aporte procedimiento almacenado

Estas en el tema de Aporte procedimiento almacenado en el foro de PostgreSQL en Foros del Web. HOLA, llego con un aporte, este procedimiento almacenado permite hacer un query y sacar unas coordenadas de una tabla, posteriormente se recorre este resultado, preguntado ...
  #1 (permalink)  
Antiguo 12/08/2010, 11:07
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Aporte procedimiento almacenado

HOLA, llego con un aporte, este procedimiento almacenado permite hacer un query y sacar unas coordenadas de una tabla, posteriormente se recorre este resultado, preguntado que puntos se encuentran en un radio circular dado teniendo como centroide cada una de las coordenadas anteriores. El resultado de este query es el input para un insert.

Código MySQL:
Ver original
  1. CREATE OR REPLACE FUNCTION P_VALTEC_CATS_RADIO(integer,text,int) RETURNS VOID as $$
  2.     rec     RECORD ;
  3.     radio   alias for $1;
  4.     tabla   alias for $2;
  5.     fuente      alias for $3;
  6.  
  7.     radio_grados    DOUBLE PRECISION;
  8.     radio_grados := (radio)::double precision/(110880)::double precision;
  9.         FOR rec IN EXECUTE 'SELECT id,cx,cy FROM valtec_puntos' LOOP
  10.             EXECUTE 'INSERT INTO valtec_cats_influencia (coddane,id_punto,codigo_categoria,nombre_categoria,area,fuente)
  11.             SELECT  coddane,'||rec.id||',codigo_categoria,nombre_categoria,'||radio||','||fuente||'
  12.             FROM    '||tabla||' WHERE CIRCLE '||quote_literal('(('||rec.cx||','||rec.cy||'),'||radio_grados||')')||' ~ POINT (cx,cy)';
  13.         END LOOP;
  14.         RETURN;
  15. $$ LANGUAGE plpgsql;

Etiquetas: procedimiento, aportes, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:56.