elvaers 2014-11-08 12:51 采纳率: 0%
浏览 1161

T-SQL 创建输入正整数,返回该正整数的阶乘。急!!

create function dbo.jiesheng(@Enter as int)
returns int
AS
begin
declare @sum int
select @sum =1
while @Enter >= 1
begin
@sum=@sum * @Enter
@Enter=@Enter-1
end
return @sum
end
我用的sql server2005写的,错误信息:
消息 102,级别 15,状态 1,过程 jiesheng,第 10 行
'@sum' 附近有语法错误。
消息 102,级别 15,状态 1,过程 jiesheng,第 14 行
'end' 附近有语法错误。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 01:57
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你已经正确地定义了一个函数来计算给定数字的阶乘了。现在让我们看一下你的 SQL 查询是如何工作的。 在 SQL 中,我们不能直接使用 @Enter 来存储变量,所以你需要将其转换为一个常量(例如,@Enter = 10)或使用一个全局变量。以下是修改后的查询:

    CREATE FUNCTION dbo.JieSheng (@Enter INT)
    RETURNS INT 
    AS
    BEGIN
        DECLARE @Sum INT
    
        SET @Sum = 1
        
        WHILE @Enter >= 1
        BEGIN
            SET @Sum = @Sum * @Enter
            SET @Enter = @Enter - 1
        END
        
        RETURN @Sum
    END
    

    这样就可以避免你在查询中使用 @Enter,同时也可以确保 @Enter 的值始终是一个非负整数。

    评论

报告相同问题?