Return 关键字之前的光标无限循环

Cursor Infinite Loop before Return Keyword

我的存储过程中有这段代码

FETCH NEXT FROM MY_CURSOR into @id
WHILE @@FETCH_STATUS = 0
BEGIN

    IF @Res == NULL
    BEGIN 
        SET @Var = false
        RETURN;
    END
    
    --some other code here
    
    FETCH NEXT FROM MY_CURSOR into @id
    END

比如变量@Res为NULL,变量@Var设置为FALSE然后调用RETURN关键字,不调用会不会死循环RETURN 关键字之前的 FETCH NEXT?

更新 1:好的,显然当它进入 if-else 块时,控制进入 RETURN 块,控制退出 WHILE 循环。我的目标是在设置 @Var 变量后继续循环。

更新 2:接受了 Gordon Linoff 关于检查空值的回答。

这个逻辑:

IF @Res == NULL

没有达到您的预期。几乎任何与 NULL returns NULL 的比较——都被视为错误。

正确的逻辑是:

IF @Res IS NULL

也就是说,您可能应该避免在代码中使用游标。您应该了解 SQL 中的 NULL 值。