SQL编写存储过程计计算1!+2!+3!+…+N!

如题所述

第1个回答  2012-12-19
create procedure sp_getval @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

不过这类东西在程序中计算要比在数据库中快的多。

SQL编写存储过程计计算1!+2!+3!+…+N!
create procedure sp_getval @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 ...

...用一个存储过程中写一个循环,求出1+2+3+4+………+100数列之和,怎么...
alter proc sum_100 as declare @i int--定义加数 declare @sums bigint--定义总和 set @i=1--给加数给初值 set @sums=0--给总和给初值 while @i<=100 begin set @sums=@sums+@i set @i=@i+1 end print @sums --执行过程 exec sum_100 当然,你也可以把参数定义到外面传入的,那...

用sql语言。。求1+2+3+。。。+100的和。。谢谢大家
sums int;i int;begin sums:=0;i:=1;while i<=100 loop sums:=sums+i;i:=i+1;end loop;dbms_output.put_line('100内的整数和:'||sums);end;\/ sqlserver 中 declare @i int;declare @sums int;set @i=1;set @sums=0;while (@i<=100)begin set @sums=@sums+@i set @i=@i...

如何通过写sql存储过程计算第一个的结束时间和第二个的开始时间(数据量...
select *,DATEDIFF(day,结束时间,下条的开始时间) as 时间差 from (select ,(select top 1 开始时间 from test z where z.ID>a.ID order by ID) as 下条的开始时间 from test a )b

使用SQL语句创建存储过程
使用SQL语句创建存储的具体过程如下:1、首先,打开企业管理器,选择【工具】-【查询分析器】:2、然后,输入SQL语句。如下:CREATE PROCEDURE byroyalty1 @percentage int AS select au_id from titleauthor where titleauthor.royaltyper = @percentage GO 3、然后,点击确定之后,命令就会自动添加进查询...

编写一个求1-2+3……-n的sql语句
这种题一般都要考虑n的取值范围,特定的去编就用处不大,这个是一个存储过程,可以随便更改n的取值范围,create proc jf (@i int ,@n int ,@sum int output)as set @i=1 set @sum=0 while(@i<=@n)begin set @sum=@sum+@i set @i=@i+1 end select @sum as 总和 对应例子:...

SQL中编程,求和:S=1+2+3```+100
--sqlserver 2000 DECLARE @i int,@sum int set @i=0 set @sum=0 WHILE @i<101 BEGIN set @sum=@sum+@i set @i=@i+1 END print @sum --另外:这个结构你也可以修改下里面的逻辑,例如放到存储过程或则函数进行数值结果返回,查看下文档测试几遍,很容易得到你要的东西 ...

SQL 编写存储过程问题(插入临时表) 条件: into #table 当时间=a时...
请参阅以下脚本 create proc [存储过程名称]as beginif [时间] ='a'begininsert into #table([列名]) values(1),(2),(3)endif [时间] ='b'begininsert into #table([列名]) values(2),(3),(4)endend请采纳! 如有疑问,请及时沟通!

sql存储过程数组参数超难问题
如:‘001,002,003’。中间用特殊符号分隔,然后写一个存储过程,用来分隔。如,分隔:‘001,002,003’,返回结果为‘001’和‘002,003’,两者都是输出参数。将这个存储过程用while(原字符串)内调用,就相当于一个for循环了。你可以先自己写一下 如果想要,我可以给你。QQ:373023677 ...

...并插入一些数据值。写一个存储过程使用游标将每行记录的年加一_百度...
create table T_Person (id int identity(1,1) primary key,p_year int,p_date datetime);GO insert into T_Person (p_year,p_date) values(year(getdate()),getdate());insert into T_Person (p_year,p_date) values(year(getdate()),getdate());insert into T_Person (p_year,p...

相似回答