Procedure Function MSSQL Tutorial

3>  CREATE FUNCTION fn_factorial (@param decimal(38, 0) )
4> RETURNS decimal(38, 0)
5>
6> AS
7> BEGIN
8>     IF (@param < 0 OR @param > 32) RETURN (0)
9>     RETURN (CASE
10>         WHEN @param > 1 THEN @param  * dbo.fn_factorial(@param - 1)
11>         ELSE 1
12>         END)
13> END
14> GO
1>
2> SELECT factorial = dbo.fn_factorial(10)
3> GO
factorial
----------------------------------------
                                 3628800