CREATE FUNCTION dbo.fakultät(@n DECIMAL(38,0))
RETURNS DECIMAL(38,0)
AS
BEGIN
DECLARE @tmp DECIMAL(38,0)
IF (@n <= 1)
SELECT @tmp = 1
ELSE
SELECT @tmp = @n * dbo.fakultät(@n - 1)
RETURN @tmp
END
GO
SELECT dbo.fakultät(10)
DROP FUNCTION dbo.fakultät
----------------------------------------
3628800
(1 row(s) affected)
Spielt man dieses Spielchen weiter, wird man feststellen, dass man bei Zahlen grösser als 32, folgende Meldung erhält:
Server: Nachr.-Nr. 217, Schweregrad 16, Status 1, Prozedur fakultät, Zeile 9
Die maximale Schachtelungsebene für .... (Limit ist 32).
Man wird auch feststellen, dass bei Input von 32 eine Abweichung zu Excel existiert.