且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

是什么导致了这种奇怪的 SQL 行为?

更新时间:2022-06-15 08:55:18

您的代码按预期运行.该过程递归地调用自己.

Your code is behaving as expected. The procedure is calling itself recursively.

如果你想要那样,试试这个:

If you do not want that, try this:

ALTER PROCEDURE dbo.Test 
    @Value int = null

AS

BEGIN

    IF (IsNull(@Value, '') = '')
        SELECT 'I am NULL!'
    ELSE
        SELECT 'I am ' + CONVERT(varchar(20), @Value)

END

GO

EXEC dbo.Test

如果你确实想使用递归,你必须定义一个基本案例(又名退出条件"),这将使存储过程退出递归堆栈.

If you do want to use recursion, you have to define a base case (AKA "exit condition") which will make stored procedure exit the recursion stack.