(x1 in number , y1 in number , x2 in number, y2 in number)
  return number
as
    
     sDX double;
     sDY double;
     PI double;
     dx1 double;
     dx2 double;
     dx double;
     dy double;
     distance double; 
begin
    
 
     sDX := 40075360.0; --赤道长度,米
     sDY := 39940670.0; --子午线长度,米
     PI := 3.14159; --圆周率
    --//计算y1, y2所在位置的纬度圈长度
     dx1 := sDX*sin(double (90.0-y1)*2*PI/360);
     dx2 := sDX*sin(double (90.0-y2)*2*PI/360);
     dx := (dx1+dx2)/2 * (x1-x2) / 360;
     dy := sDY * (y2-y1) / 360;
     distance := sqrt (dx*dx + dy*dy);
    return distance;
exception
    when others then
    return 0;end;