编写存储过程如下;两层循环;内层计算阶乘,外层相加;
create procedure sp_getfact @n int
as
declare @i int,@j int,@val int,@sval int
set @i=1
set @val=0
while @i<=@n
begin
set @j=@i
set @sval=1
while @j>1
begin
set @sval=@sval*@j
set @j=@j-1
end
set @val=@val+@sval
set @i=@i+1
end
return @val
go
@n为输入参数;
存储过程创建成功以后;执行一下;先输入一个参数3;
看一下结果,9; 1 + 2 + 3*2*1 = 9;
然后用语句来执行;结果33;
declare @myfact int
exec @myfact = sp_getfact @n=4
SELECT '结果:' = @myfact
1+2+6+4*3*2*1 = 9 + 24 = 33; 没错;