我在SQL中使用此过程通过纬度和经度查找Bing地图上的近位置。
程序返回
发生了无效的浮点运算
当我搜索@latitude = 7025045,@ longitude = 702342
时这是我的程序:
ALTER PROCEDURE [dbo].[UppdragNearByUppdrag3]
@latitude int,
@longitude int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT ARUppdrag.cUppdrNr AS UppdrNr, a.iLarmNorthing AS LarmKoordinatNorthing, a.iLarmEasting AS LarmKoordinatEasting
FROM Trakt AS a INNER JOIN
ARUppdrag ON a.iTraktID = ARUppdrag.iTraktID
WHERE a.iLarmNorthing <> 0 and a.iLarmEasting <> 0 And (ACOS(SIN(a.iLarmNorthing * 0.0175) * SIN(@latitude * 0.0175) + COS(a.iLarmNorthing * 0.0175) * COS(@latitude * 0.0175) *
COS(@longitude * 0.0175 - a.iLarmEasting * 0.0175)) * 3959 <= 100)
END
答案 0 :(得分:0)
以高精度将@longitude和@latitude转换为float或decimal。因为它们是INT,当它们作为数学语句中的第一个变量出现时,会有一个隐式类型转换为INT,然后存在无效的浮点操作。