Problem with function...

Поиск
Список
Период
Сортировка
От jkakar@expressus.com
Тема Problem with function...
Дата
Msg-id 20001218141644.A4107@expressus.com
обсуждение исходный текст
Ответы Re: Problem with function...  (Michael Fork <mfork@toledolink.com>)
Re: Problem with function...  (Jie Liang <jliang@jliang.ipinc.com>)
Список pgsql-sql
Hi,

I hope my question is appropriate for this list.  I'm trying to create
a function that calculates the distance between a pair of
latitude/longitude points.  This is what I have:

/* latlon_distance.pgsql* by Jamu Kakar <jkakar@expressus.com>, Dec 18, 2000.** Calculates the distance between 2
lat/lonpairs.  Syntax:* distance (lat1, lon1, lat2, lon2) where parameters are in decimal degrees.*/
 

CREATE FUNCTION distance (float8, float8, float8, float8) RETURNS float8 AS ' DECLARE   radius constant float8 := 6378;
 distance float8;   lat1 ALIAS FOR $1;   lon1 ALIAS FOR $2;   lat2 ALIAS FOR $3;   lon2 ALIAS FOR $4; BEGIN   distance
:=radius * acos ((sin (radians (lat1)) * sin (radians (lat2))) +                              (cos (radians (lat1)) *
cos(radians (lat2)) *                                cos (radians (lon1) - radians (lon2))));   RETURN ''distance'';
END;
' LANGUAGE 'plpgsql';

When I try a:

select distance(49.0,-122.0,50.0,-123.0) as distance;

I get:

ERROR:  Bad float8 input format 'distance'

I've tried a variety of ways of specifying the values and I've hunted
through the mailing lists but haven't turned up anything useful.  Any
help would be appreciated.

Thanks,
Jamu.

-- 
Jamu Kakar (Developer)            Expressus Design Studio, Inc.
jkakar@expressus.com            708-1641 Lonsdale Avenue
V: (604) 988-6999            North Vancouver, BC, V7M 2J5


В списке pgsql-sql по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Best database structure for timely ordered values
Следующее
От: Michael Fork
Дата:
Сообщение: Re: Problem with function...