A better solution with no limits.
Thanks to:
http://2smart4school.com/tsql-stored-procedure-to-get-factorial-of-a-given-number/
CREATE PROCEDURE Factorial (@num INT) AS
BEGIN
DECLARE @fact int, @query varchar(255)
SET @fact = 1
IF(@num = 0)
BEGIN
SET @fact = 1
END
ELSE
BEGIN
WHILE(@num >0)
BEGIN
SET @fact = @fact * @num
SET @num = @num -1
END
END
RETURN @fact
END