+ -
当前位置:首页 → 问答吧 → 创建用户自定义函数,求语句。谢谢帮忙!

创建用户自定义函数,求语句。谢谢帮忙!

时间:2011-12-20

来源:互联网

创建用户自定义函数jch,用于求1!+2!+3!+....n!,n为任意正整数,并以“1!~n!之和为:”的形式显示求出的阶乘之和。

作者: sd13988471197   发布时间: 2011-12-20

N别搞太大的话,可以做

作者: guguda2008   发布时间: 2011-12-20

数据库做计算真的很不好。

作者: ssp2009   发布时间: 2011-12-20

试了一下,用BIGINT,阶乘最多算到20,劝你还是自己用程序想办法吧。

作者: guguda2008   发布时间: 2011-12-20

晕。。。这是我们老师出个考试题,,我就要语句就行。。求帮忙

作者: sd13988471197   发布时间: 2011-12-20

SQL code
declare @n int,@s int,@i int
set @n=1
set @s=1
set @i=1
while @n<=10
begin
set @i=@i*@n
set @s=@s+@i
set @n=@n+1
end
print @s

/*4037914*/

作者: fredrickhu   发布时间: 2011-12-20

怎么没有创建函数呀

作者: sd13988471197   发布时间: 2011-12-20

SQL code


--函数一
CREATE function [dbo].[jc](@str1 decimal(38,0)) returns decimal(38,0)

as

begin

declare @str2 decimal(38,0),@i decimal(38,0)
set @i=1
set @str2=1
while(@i<=@str1)

begin

set @str2=@i*@str2
set @i=@i+1

end
return @str2

end

GO

--函数二
CREATE function [dbo].[jch](@str1 decimal(38,0)) returns nvarchar(50)

as

begin

declare @str2 decimal(38,0),@i decimal(38,0)
set @i=1
set @str2=0
while(@i<=@str1)

begin

set @str2+=[dbo].[jc](@i)
set @i=@i+1

end
return '1!~'+cast(@str1 as nvarchar(50))+'!之和为:'+cast(@str2 as nvarchar(50))

end

GO

--实例
--select [dbo].[jch](4)
--1!~4!之和为:33


作者: cscarl   发布时间: 2011-12-20

SQL code

CREATE FUNCTION jch(@n int)
RETURNS BIGINT
AS
BEGIN
    DECLARE @sum BIGINT  SET @sum=0
    WHILE @n>0
    BEGIN
        DECLARE @i BIGINT SET @i=@n
        DECLARE @k BIGINT SET @k=@i
        WHILE @i>1
        BEGIN
        SET @k=@k*(@i-1)
        SET @i=@i-1
        END
        SET @sum=@sum+@k
        SELECT @n=@n-1
    END
    return @sum    
END

SELECT dbo.jch(5)
/*
153
*/

作者: maco_wang   发布时间: 2011-12-20

SQL code

SELECT dbo.jch(20)
/*
2561327494111820313
*/

作者: maco_wang   发布时间: 2011-12-20

热门下载

更多