Vinicius escreveu:
> O que preciso fazer é ter um tipo point criado apartir de latitude 
> varchar e longitude varchar, pois preciso passar estes 2 parametros como 
> string.
String? Se os parâmetros são numéricos eles devem ser declarado como tal. 
Abaixo duas versões: com parâmetros numéricos e com parâmetros varchar.

euler=# create table cidade (coordenada point);
CREATE TABLE
euler=# insert into cidade values(point(1.2, 3.4)),(point(11.2, 31.4));
INSERT 0 2
euler=# CREATE OR REPLACE FUNCTION public.cidfunc(lat double precision, lon 
double precision)
  RETURNS void
  LANGUAGE plpgsql
AS $function$
DECLARE
         r float;
BEGIN
         FOR r IN SELECT point(lat, lon)<->coordenada FROM cidade
         LOOP
                 RAISE NOTICE 'coord: %', r;
         END LOOP;
END;
$function$
;
CREATE FUNCTION
euler=# select cidfunc(5.2, 10.5);
NOTA:  coord: 8.14923309275173
NOTA:  coord: 21.7441946275322
  cidfunc
---------

(1 registro)

euler=# CREATE OR REPLACE FUNCTION public.cidfunc(lat varchar, lon varchar)
  RETURNS void
  LANGUAGE plpgsql
AS $function$
DECLARE
         r float;
BEGIN
         FOR r IN EXECUTE 'SELECT point(' ||lat || ', ' || lon || 
')<->coordenada
         FROM cidade'
         LOOP
                 RAISE NOTICE 'coord: %', r;
         END LOOP;
END;
$function$
;
CREATE FUNCTION
euler=# select cidfunc('5.2', '10.5');
NOTA:  coord: 8.14923309275173
NOTA:  coord: 21.7441946275322
  cidfunc
---------

(1 registro)

euler=#


-- 
   Euler Taveira de Oliveira
   http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a