當前位置:首頁 » 編程語言 » sql求階乘的代碼並調用
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql求階乘的代碼並調用

發布時間: 2023-07-29 12:08:39

sql 求n階乘

create procere的意思就是建立存儲過程,factorial是存儲過程的名字,@n int定義參數,用來將要計算階乘的數值傳入存儲過程,as關鍵字後面就是存儲過程的定義語句了。

㈡ 在SQLserver中用while循環語句編寫20的階乘程序,並用print語句輸出結果請大家多多指教,謝謝!

declare @sum bigint
declare @i int
set @sum = 1
set @i = 2
while(@i <= 20)
begin
set @sum = @i * @sum
set @i = @i + 1
end
print @sum

一個建議,想要學得真本事,問題就得自己嘗試解決,除非你只是想敷衍自己

㈢ 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);

㈣ 用Transact-SQL語句創建一個求階乘的函數!!!!

居然用SQL這種集合操作語言,來做類C的函數式語言的事(雖然是可以的):(


現在的老師也太無聊了,估計自己很少真正使用SQL。

/*--=============================================
--Author: Yew
--Createdate:2016-10-26
--Description: 計算階乘

--testCode-------------
SELECTdbo.uf_Factorial(-1)
SELECTdbo.uf_Factorial(0)
SELECTdbo.uf_Factorial(1)
SELECTdbo.uf_Factorial(10)
SELECTdbo.uf_Factorial(33)--會否溢出?

----History-----------------
--=============================================*/
ALTERFUNCTIONdbo.uf_Factorial(
@N INT
)RETURNSBIGINT
AS
BEGIN
IF@N<0
RETURNNULL--RAISERROR(N'參數N不能為負')

IF@N=0
RETURN1

RETURNdbo.uf_Factorial(@N-1)*@N--遞歸
END

GO

資料庫技術與應用—SQL Seerver問題:編寫用戶定義函數,輸入正整數,返回該正整數的階乘值!

這個網上有很多例子么~~要善於利用google和么~~ 呵呵

在庫中建立一個函數,代碼為:

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

㈥ 如何在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

祝你好運!

㈦ 這個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會對這條新的數據進行篩選,逐步下去,就成啦圖中顯示的這樣。

㈧ 用資料庫怎樣求解階乘

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資料庫中求一個數的階乘

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