‘壹’ my sql计算任意整数N的阶乘
你的目的:计算任意整数N的阶乘:可能会出现问题,当乘积 大于 bigint的最大值后,就会出错,比如 10000000的10000000次方或者更大的次方,肯定大于bigint的最大值,所以下面的存储过程,进阶成绩在一定的范围内有效。
我来回答吧,我测试过没有问题的
DELIMITER $$
CREATE PROCEDURE `Squair`(input int, n int)
BEGIN
declare totail bigint default input;
declare _index int default 1;
emp_loop: LOOP
if _index >= n then
LEAVE emp_loop;
end if;
set totail = totail * input;
set _index = _index + 1;
end loop emp_loop;
select totail;
END $$
DELIMITER ;
-- 执行
CALL Squair(10,5);
-- 执行下面的语句将会出错
CALL Squair(10000000,10000000);
‘贰’ 这个sql程序是怎么执行的10的阶乘的运算,能不能详细点
从With符号标记得到的查询缓存表MyCTE中得到我们需要的值是最后一句的意思。
AS之中的句子可以这么理解:
选出n=1和njc=1到查询表MyCTE中。union all,关联之后的查询中所得的所有结果。而在SELECT n,njc。。。的语句的意思是, 从表MyCTE中选出所有的n和njc的值,且条件是n小于10,并把n加1和njc与n+1相乘得出来的值加以显示,但是因为其实在MyCTE标识的语句中的SELECT语句,所以选取出的结果会放在缓存表MyCTE中。又因为SELECT语句选择时对于数据的选取是逐条进行比对的,所以当上一条数据比对完成并选取出结果的时候,新的选取结果同时会加入到查询缓存表MyCTE中,所以Select会对这条新的数据进行筛选,逐步下去,就成啦图中显示的这样。
‘叁’ 如何在SQL SERVER中实现阶乘运算
以下为求10的阶乘的代码
declare @i int,@r int
set @i=1
set @r=1
while @i<=10
begin
set @r=@r*@i
set @i=@i+1
end
--显示10的阶乘的结果
print @r
--上面一行也可以换成 select @r
祝你好运!
‘肆’ 用T-SQL语句做计算1至5阶乘之和
T-SQL不会,以下是另外两种方法:
第1种:
insert into table1 (shuzi) values (1);
insert into table1 (shuzi) values (2);
insert into table1 (shuzi) values (3);
insert into table1 (shuzi) values (4);
insert into table1 (shuzi) values (5);
select sum(shuzi * shuzi) 结果 from table1
第2种(pl_sql):
declare
number1 number := 1;
number2 number := 5;
i number;
jieguo number :=0;
begin
for i in number1..number2 loop
jieguo := jieguo + i * i;
end loop;
dbms_output.put_line(jieguo);
end;
‘伍’ SQL求N!(N的阶乘)!在线等谢谢了啊
存储过程如下:
CREATE PROCEDURE factorial
@n int
AS
declare @i int,@result bigint
set @i=1
set @result=1
while @i<=@n
begin
set @result=@result*@i
set @i=@i+1
end
print @result
GO
使用方法:
exec factorial 数字
‘陆’ 用数据库怎样求解阶乘
declare @sum bigint,@count int
select @sum=1,@count=1
label:
select @sum=@sum*@count
select @count=@count +1
if @count <=20
goto label
select @sum
这个是sql的 1到20的阶乘 count少于15可以直接定义@sum int 大于的话会算数溢出
‘柒’ sql 求n阶乘
create procere的意思就是建立存储过程,factorial是存储过程的名字,@n int定义参数,用来将要计算阶乘的数值传入存储过程,as关键字后面就是存储过程的定义语句了。
‘捌’ 如何在sql中实现阶乘运算
????
这个??
‘玖’ 怎么在SQL数据库中求一个数的阶乘
createfunctionjc(@Aint)
returnsbigintas
begin
declare@Rbigint,@Iint
set@R=1
set@I=1
while@I<=@A
begin
set@R=@R*@I
set@I=@I+1
end
return@R
end
‘拾’ pl/sql 计算阶乘相加 如:S=2!+4!+6!+8!+10!
declare @x int,@num int,@i int,@r int
set @x=1
set @num=0
set @i=1
set @r=1
while @x<=5
begin
while @i<=2*@x
begin
set @r=@r*@i
set @i=@i+1
end
set @num=@num+@r
set @x=@x+1
end
print @num --这个地方可能与plsql的输出不相同
以上程序已经在sqlserver2000中运行通过。
如果以上程序语法有和plsql不相同的地方稍加修改即可。
最后结果为:3669866