oracle计算距离,oracle函数计算两个坐标点距离

主要两个函数:

CREATE OR REPLACE FUNCTION RAD(d number) RETURN NUMBER

is

PI number :=3.141592625;

begin

return d* PI/180.0;

end ;

CREATE OR REPLACE FUNCTION GetDistance(lat1 number,

lng1 number,

lat2 number,

lng2 number) RETURN NUMBER is

earth_padius number := 6378.137;

radLat1 number := rad(lat1);

radLat2 number := rad(lat2);

a number := radLat1 - radLat2;

b number := rad(lng1) - rad(lng2);

s number := 0;

begin

s := 2 *

Asin(Sqrt(power(sin(a / 2), 2) +

cos(radLat1) * cos(radLat2) * power(sin(b / 2), 2)));

s := s * earth_padius;

s := Round(s * 10000)/10;--单位米

--s := Round(s * 10000)/10000;--单位千米

return s;

end;