While循环SQL Server

While循环SQL Server,sql,sql-server,loops,while-loop,sql-server-2014,Sql,Sql Server,Loops,While Loop,Sql Server 2014,请帮帮我。我需要写两个函数,一个计算阶乘,另一个计算欧拉和 为了得到欧拉和,我需要使用计算工厂的函数。 我已经有阶乘函数了,但当求和时,结果是“NULL” 注意:需要使用“while”循环完成 我的代码: CREATE FUNCTION Factorial (@a INT) RETURNS INT AS BEGIN DECLARE @i INT IF @a <= 1 SET @i =1 ELSE SET @i = @a * db

请帮帮我。我需要写两个函数,一个计算阶乘,另一个计算欧拉和

为了得到欧拉和,我需要使用计算工厂的函数。 我已经有阶乘函数了,但当求和时,结果是“NULL”

注意:需要使用“while”循环完成

我的代码:

CREATE FUNCTION Factorial (@a INT)
RETURNS INT 
AS
BEGIN
    DECLARE @i INT

    IF @a <= 1
        SET @i =1 
    ELSE
        SET @i = @a * dbo.Factorial(@a-1)

    RETURN @i
END

SELECT dbo.Factorial(11) 'factorial'

CREATE FUNCTION Sum_Euler(@a FLOAT)
RETURNS FLOAT
BEGIN 
    DECLARE @b FLOAT, 
            @c FLOAT;

    SET @c = (SELECT dbo.Factorial(@a))

    WHILE(@b <= @c)
    BEGIN
        SET @b = 1 / @a * @c
    END 

    SET @b = @b + 1

    RETURN @b
END
GO

SELECT dbo.Sum_Euler(10)
创建函数阶乘(@a INT)
返回整数
作为
开始
声明@i INT

如果@a我会对你的第二个函数做如下更改

create FUNCTION dbo.Sum_Euler(@a int)
RETURNS float 
BEGIN 
    DECLARE @b float;
    if @a<=1
        set @b =1.0+1.0;
    else
    begin
      set @b = dbo.Sum_Euler(@a-1) + 1.0/dbo.Factorial(@a);
    end
        RETURN @b;

END
GO
创建函数dbo.Sum\u Euler(@a int)
返回浮动
开始
宣布@b浮动;

如果@A表中的是什么
dbo.Factorial1
,或者您是否打算键入
dbo.Factorial
?dbo.Factorial sorry您正在
中使用
@b
(@b如何设置初始值?
DECLARE@b float=0
@arturortizvázquez,非常欢迎您,很高兴能为您提供帮助。家庭在应对技术挑战时也是如此。
create FUNCTION dbo.Sum_Euler(@a int)
RETURNS float 
BEGIN 
    DECLARE @b float;
    if @a<=1
        set @b =1.0+1.0;
    else
    begin
      set @b = dbo.Sum_Euler(@a-1) + 1.0/dbo.Factorial(@a);
    end
        RETURN @b;

END
GO