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