En muchas ocaciones en nuestros procedimientos almacenados necesitamos hacer cálculos y no tenemos las mismas herramientas que si tenemos en nuestras aplicaciones, para eso y más funcionalidades es que podemos utilizar funciones.
ALTER FUNCTION FACTORIAL(@numero numeric(5))
RETURNS numeric
BEGIN
Declare @Fact numeric
IF @numero = 0 OR @numero = 1
SELECT @Fact = 1
ELSE
SELECT @Fact = dbo.FACTORIAL(@numero – 1) * @numero
RETURN @Fact
END