2015-06-03 39 views
1

我创建了以下功能两点之间计算距离:问题调用函数的SQL Server 2008

CREATE FUNCTION [fnCalcDistanceKM](@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT,  @lon2 FLOAT) 
    RETURNS FLOAT 
    AS 
    BEGIN 

RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371 
END 

但是当我运行下面的select语句......我得到的错误:

不正确句法靠近'13 .077085'。

select [fnCalcDistanceKM](13.077085,80.262675,13.065701,80.258916) 
+0

男孩。 ,该功能肯定看起来很熟悉! – RBarryYoung

回答

2

你应该和架构名称称呼它:

select dbo.[fnCalcDistanceKM](13.077085,80.262675,13.065701,80.258916) 

Scalar-valued functions must be invoked by using at least the two-part name of the function. For more information about multipart names, see Transact-SQL Syntax Conventions (Transact-SQL).

+0

试过这个...我得到这个错误:找不到列“dbo”或用户定义的函数或聚集“dbo.fnCalcDistanceKM”,或名称不明确。 – dave

+0

你应该指定实际的模式。查看函数在哪个架构中创建 –

0

试试这个:SELECT * FROM [DBO] [fnCalcDistanceKM] 13.077085,80.262675,13.065701,80.258916)