SQL Func factorial

Func factorial

CREATE FUNCTION fn_factorial (@param decimal(38, 0) )
RETURNS decimal(38, 0)

AS
BEGIN
    IF (@param < 0 OR @param > 32) RETURN (0)
    RETURN (CASE
        WHEN @param > 1 THEN @param  * dbo.fn_factorial(@param - 1)
        ELSE 1
        END)
END
GO
SELECT factorial = dbo.fn_factorial(10)
GO