Problem with function...

From: jkakar(at)expressus(dot)com
To: pgsql-sql(at)postgresql(dot)org
Subject: Problem with function...
Date: 2000-12-18 22:16:44
Message-ID: 20001218141644.A4107@expressus.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)expressus(dot)com>, Dec 18, 2000.
*
* Calculates the distance between 2 lat/lon pairs. 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(at)expressus(dot)com 708-1641 Lonsdale Avenue
V: (604) 988-6999 North Vancouver, BC, V7M 2J5

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Michael Fork 2000-12-18 22:30:09 Re: Problem with function...
Previous Message Tom Lane 2000-12-18 20:16:26 Re: Re: [SQL] PostgreSQL crashes on me :(