Problem with function... - Mailing list pgsql-sql

From jkakar@expressus.com
Subject Problem with function...
Date
Msg-id 20001218141644.A4107@expressus.com
Whole thread Raw
Responses Re: Problem with function...
Re: Problem with function...
List 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 by date:

Previous
From: Tom Lane
Date:
Subject: Re: Best database structure for timely ordered values
Next
From: Michael Fork
Date:
Subject: Re: Problem with function...