数据库技术与应用—SQL Seerver问题:编写用户定义函数,输入正整数,返回该正整数的阶乘值!

如题所述

这个网上有很多例子么~~要善于利用google和baidu么~~ 呵呵

在库中建立一个函数,代码为:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- 计算输入参数的阶乘
CREATE FUNCTION [dbo].[Factorial](@num INT)
RETURNS BIGINT
AS
BEGIN
DECLARE @Result BIGINT;
DECLARE @i INT;

SELECT @Result = 1;
SELECT @i = 1;
IF (@num < 1)
BEGIN
-- 如果输入的参数小于1返回1
SELECT @Result = 1
END
ELSE
BEGIN
-- 循环计算阶乘
WHILE (@i <= @num)
BEGIN
SELECT @Result = @Result * @i;
SELECT @i = @i + 1;
END
END
-- 返回结果
RETURN @Result;
END

假设有表test01,列MyInt,类型为Int,值为4,执行查询:
select dbo.fact(MyInt) from test01

则查询结果为 24

1*2*3*4=24
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-07
CREATE FUNCTION DBO.UF_Factorial
(
@Input_Int INT
)
RETURNS INT

AS

BEGIN

DECLARE @Num INT
DECLARE @Factorial INT
SET @Num = 1
SET @Factorial = 1

IF @Input_Int = 0
BEGIN
RETURN 0
END
ELSE
BEGIN
WHILE @Num < @Input_Int + 1
BEGIN
SET @Factorial = @Factorial * @Num
SET @Num = @Num + 1
END
END

RETURN @Factorial
END
--赋值为5
--输出@i = 120
DECLARE @I INT
SET @I = DBO.UF_Factorial(5)
PRINT @I

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网