在SQL Server中创建递归函数
我试图从函数本身调用函数,但它给了我错误 “CalculateHoursBetweentDates”不是可识别的内置函数名 我知道这是因为我没有创建函数,但我是从函数本身内部调用它的 这是我的代码:在SQL Server中创建递归函数,sql,sql-server,Sql,Sql Server,我试图从函数本身调用函数,但它给了我错误 “CalculateHoursBetweentDates”不是可识别的内置函数名 我知道这是因为我没有创建函数,但我是从函数本身内部调用它的 这是我的代码: create function CalculateHoursBetweenDates (@start varchar(50), @end varchar(50), @days int = 0) returns int as begin declare
create function CalculateHoursBetweenDates
(@start varchar(50),
@end varchar(50),
@days int = 0)
returns int
as
begin
declare @dayDiff int = DATEDIFF(d, @start, @end) + DATEPART(dw, @start)
if(@dayDiff > 6)
begin
set @days = @days + (DATEPART(dw, @start) -7)
set @start = DATEADD(d, 7 - (datepart(dw, @start) - 2), @start)
return CalculateHoursBetweenDates(@start, @end, @days)
end
return @days + DATEDIFF(d, @start, @end)
end
我是不是叫错了?我必须先创建一个空函数吗?我不明白我怀疑您需要架构前缀:
select <scheme>.CalculateHoursBetweenDates (. . . .)
select.计算日期之间的小时数(…)
但是,默认的模式名称是
dbo
请尝试在其前面加上dbo.
:dbo.CalculateHoursBetween日期
好的,可以了。你能解释一下为什么需要为此指定模式吗?@TylerRoper哎呀,这的确很重要。撤回了我的投票。