當前位置:首頁 » 編程語言 » sql存儲過程計算階乘
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql存儲過程計算階乘

發布時間: 2022-06-16 18:07:33

『壹』 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