SQL函数正确返回但在Management Studio中显示错误

时间:2013-04-26 23:42:08

标签: sql sql-server-2008 tsql sql-function

我有这个功能,虽然它正确地返回了值,但在管理控制台中显示错误,并带有波浪形的红色下划线:

Cannot find either column dbo or the user-defined function or aggregate

这是一个问题的原因是我发现这是造成数据类型错误的原因。

这是功能:

CREATE FUNCTION CALC_DISTANCE(@A_LAT decimal(9,6), @A_LNG decimal(9,6), @B_LAT decimal(9,6), @B_LNG decimal(9,6))
RETURNS int
AS
BEGIN
    DECLARE @source geography = geography::Point(@A_LAT, @A_LNG, 4326)
    DECLARE @target geography = geography::Point(@B_LAT, @B_LNG, 4326)
    DECLARE @MILES float = 0.00062137
    DECLARE @D int = (SELECT @source.STDistance(@target) * @MILES * 1.08)
    RETURN @D
END
GO

DECLARE @A_LAT decimal(9,6) = '41.60054'
DECLARE @A_LNG decimal(9,6) = '-93.60911'
DECLARE @B_LAT decimal(9,6) = '25.77427'
DECLARE @B_LNG decimal(9,6) = '-80.19366'

SELECT dbo.CALC_DISTANCE(@A_LAT,@A_LNG,@B_LAT,@B_LNG) As 'CALC_DISTANCE (MILES)'

我是SQL函数的新手,所以这可能是一个新手错误。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果刚刚添加了此功能,则需要“刷新IntelliSense缓存”:

在查询编辑器窗口中Edit(Menu)->IntelliSense->Refresh Local Cache。当然,如果在高速缓存刷新之前添加,它将仅检测该函数:确保SSMS编辑器具有最新信息的最简单方法是声明函数,刷新高速缓存,以及然后使用该功能。

如果它运行,那么它就可以了,SSMS只是混淆了(可能是由于陈旧的缓存,如上所述) - 红色波形只是一个客户端工件而且并不总是反映查询执行。