Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中创建递归函数_Sql_Sql Server - Fatal编程技术网

在SQL Server中创建递归函数

在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

我试图从函数本身调用函数,但它给了我错误

“CalculateHoursBetweentDates”不是可识别的内置函数名

我知道这是因为我没有创建函数,但我是从函数本身内部调用它的

这是我的代码:

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哎呀,这的确很重要。撤回了我的投票。