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

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

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

找不到列 dbo 或用户定义的函数或聚合

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

这是函数:

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 函数的新手,所以这可能是一个新手错误。

感谢您的帮助!

最佳答案

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

在查询编辑器窗口中,Edit(Menu)->IntelliSense->Refresh Local Cache。当然,这只会检测在缓存刷新之前添加的函数:确保 SSMS 编辑器具有最新信息的最简单方法是声明函数、刷新缓存,然后然后使用函数。

如果它运行了,那就没问题了,SSMS 只是混淆了(可能是由于缓存过时,如上所述)- 红色波浪线只是客户端工件,并不总是反射(reflect)查询执行。

关于SQL 函数正确返回但在 Management Studio 中显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246732/

相关文章:

javascript - 需要每行总值并且应显示在行末尾

mysql - 结合查询机智

sql-server - 连接之间巨大的性能差异

c# - 如何从 SQL 中检索多个值到标签

tsql - 如何跳过在 HIVE 命令行中显示结果?

tsql - 从 sp_executsql 插入临时表

SQL Server、ISABOUT、加权项

mysql - 跨具有 NULL 值的多个表在 MySQL 中进行 LEFT JOIN

sql-server - 如何在 Multi-Tenancy 数据库中最好地生成唯一的用户编号而不会重复

sql - 使用 ROW_NUMBER() OVER (PARTITION BY ...) 时出现问题