Курсор Бесконечный L oop перед возвратом Ключевое слово - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть этот фрагмент кода в моей хранимой процедуре

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, вызовет ли оно бесконечное число l oop, если я не вызову FETCH NEXT до ключевого слова RETURN?

UPDATE 1: нормально, поэтому, очевидно, когда он входит в блок if-else, и элемент управления переходит к блок RETURN, управление выходит из режима пока l oop. Моя цель - чтобы l oop продолжил работу после установки переменной @Var.

1 Ответ

0 голосов
/ 10 февраля 2020

Этот лог c:

IF @Res == NULL

не делает то, что вы ожидаете. Почти любое сравнение с NULL возвращает NULL - что считается ложным.

Правильный лог c:

IF @Res IS NULL

Тем не менее, вам, вероятно, следует избегать курсоры в вашем коде. И вы должны узнать о NULL значениях в SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...