<p>今天在学习存储过程时,了解到在存储过程中,也可以使用递归编程。</p>
以下是一个使用递归方法计算阶乘的存储过程的实现。
CREATE PROC spFactorial @ValueIn int, @ValueOut int OUTPUT AS DECLARE @InWorking int; DECLARE @OutWorking int; IF @ValueIn != 1 BEGIN SELECT @InWorking = @ValueIn - 1; EXEC spFactorial @InWorking, @OutWorking OUTPUT; SELECT @ValueOut = @ValueIn * @OutWorking; END ELSE BEGIN SELECT @ValueOut = 1; END RETURN; GO
以下是调用它的SQL语句:
DECLARE @WorkingOut int; DECLARE @WorkingIn int; SELECT @WorkingIn = 7; EXEC spFactorial @WorkingIn, @WorkingOut OUTPUT;PRINT CAST(@WorkingIn AS varchar) + ' factorial is ' + CAST(@WorkingOut AS varchar);