㈠ 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